Minggu, 12 Desember 2010

Praktikum Struktur Data 6


#include <cstdlib>
#include <iostream>


//template <class T>
class Node{
friend class List;
friend ostream& operator<<(ostream&, const List&);
public:
Node(char& t,Node* p) : info(t), berikut(p){}
protected:
char info;
Node *berikut;
};

//template <class T>
class List{
friend ostream& operator<<(ostream&, const List&);
public:
List() : kepala(0){}
~List();
void sisip(char t);
char hapus(char& t);
char kosong() {return (kepala == 0);}
void cetak();
void sisipTengah();
protected:
Node* kepala;
Node* nodeBaru(char& t,Node* p)
{ Node* q = new Node(t,p); return q;}
};
//template <class T>
ostream& operator<<(ostream& out, const List& k)
{
for (Node* p = k.kepala; p; p=p->berikut)
out << p->info << "->";
out << "*\n";
return out;
}
//template <class T>
List::~List()
{
Node* temp;
for (Node* p = kepala; p;)
{
temp = p;
p = p->berikut;
delete temp;
}
}
//template <class T>
void List::sisip(char t)
{
cout << t <<" "<< "masuk list :";
Node* p = nodeBaru(t,kepala);
kepala = p;
}

void List::sisipTengah(){
char a;
cout<<"Masukan list :";
cin>>a;


}
//template <class T>
char List::hapus(char& t)
{
if (kosong()) return 0; //penghapusan gagal
t = kepala->info;
Node* p = kepala;
kepala = kepala->berikut;
delete p;
return 1; //penghapusan sukses
}
//template <class T>
void List::cetak()
{
for (Node* p = kepala; p; p=p->berikut)
cout << p->info << "->";
cout << "*\n";
}

int main()
{
List x;
char data;
x.sisip('a');
cout << x;
x.sisip('b');
cout << x;
x.sisip('c');
cout << x;
x.sisip('d');
cout << x;
cout<<endl;
cout<<"cetak list :";
x.cetak();
cout<<endl;
x.sisipTengah();

cout<<endl;
for (int i=0; i<2; i++){
x.hapus(data);
cout << data <<" "<< "dihapus dari depan list :";
cout << x;
cout<<endl;

}
system("PAUSE");
return EXIT_SUCCESS;
}


Tidak ada komentar:

Posting Komentar