Link List atau daftar berantai adalah suatu struktur data yang tersusun atas paling tidak dua element yaitu info dan link (Biasanya berupa pointer) yang gunanya untuk merangkai element (atau biasa disebut sebagai node) berikutnya.
Contoh Programnya :
Contoh Programnya :
#include <cstdlib>Outpunya :
#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);
void sisip_depan (char t);
void sisip_tengah (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 << " Null\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 << "Data List = ";
cin >> t;
Node* p = nodeBaru(t,kepala);
kepala = p;
}
void List::sisip_depan(char t)
{
cout<< "Data yang di tambah didepan : ";
cin>>t;
Node* p = nodeBaru(t,kepala);
p-> berikut= kepala;
kepala=p;
}
void List::sisip_tengah(char t)
{
cout<< "Data yang di tambah ditengah : ";
cin>>t;
Node* p = nodeBaru(t,kepala);
p-> berikut= kepala;
p=kepala;
}
int List::hapus(char& t)
{
cout<< "Data yang di hapus : ";
cin>>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()
{
List x;
char data;
int nilai;
cout<<"\t\tSlamet Islan Al Hidayah"<<endl;
cout<<"\t\t 10018075 "<<endl;
cout<<"\t\t Praktikum 5 "<<endl;
cout<<endl;
cout<<endl;
cout<<"Masukkan Jumlah List : ";
cin>>nilai;
for(int i=0;i<nilai;i++){
cout<<"Masukkan data "<<i+1<<" : ";
x.sisip(data);
cout << x;
}
cout<<endl;
for(int i=0;i<1;i++){
x.sisip_depan(data);
cout<<"Hasil :";
cout<<x;
}
cout<<endl;
for(int i=0;i<1;i++){
x.sisip_tengah(data);
cout<<"Hasil :";
cout<<x;
}
cout<<endl;
for(int i=0;i<1;i++){
x.hapus(data);
cout<<"Hasil :";
cout<<x;
}
cout<<endl;
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
0 Response to " SData - Praktikum 5 "Link List" "
Post a Comment