Link List is a form of dynamic data structures and inter-connect - connect.
Link List is more flexible to use than arrays, because it is dynamic (no limit data), in contrast to the data array has a maximum limit. Link List can be linked to a variable of type pointer.
and below is a sample program:
#include <cstdlib>
#include <iostream>
using namespace std;
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;
};
class List{
friend ostream& operator<<(ostream&, const List&);
public:
List() : kepala(0){}
~List();
void sisip(char t);
int hapus(char& t);
int kosong() {return (kepala == 0);}
void cetak();
protected:
Node* kepala;
Node* nodeBaru(char& t,Node* p)
{Node* q = new Node(t,p); return q;}
};
ostream& operator<<(ostream& out, const List& k)
{
for(Node* p=k.kepala;p;p=p->berikut)
out << p->info <<" ->";
out << "*\n";
return out;
}
List::~List()
{
Node* temp;
for(Node* p=kepala;p;)
{
temp=p;
p=p->berikut;
delete temp;
}
}
void List::sisip(char t)
{
cout << t << "masuk list:";
Node* p=nodeBaru(t,kepala);
kepala=p;
}
int List::hapus(char& t)
{
if(kosong()) return 0;
t=kepala->info;
Node *p = kepala;
kepala=kepala->berikut;
delete p;
return 1;
}
void List::cetak()
{
for (Node* p = kepala; p; p=p->berikut)
cout << p->info <<" ->";
cout << "*\n";
}
int main(int argc, char *argv[])
{
List x;
char data;
x.sisip('a');
cout << x;
x.sisip('b');
cout << x;
x.sisip('c');
cout << x;
x.sisip('d');
cout << x;
for (int i=0; i<5; i++){
x.hapus(data);
cout << data << " dihapus dari list :";
cout << x;
}
system("PAUSE");
return EXIT_SUCCESS;
}
semoga bermanfaat (^_^)
Tidak ada komentar:
Posting Komentar