#include <iostream>
using namespace std;
class linklist{
public:
linklist();
void tambah(int);
void tambahdepan(int);
void tambahbelakang(int);
void tampil();
void hapus(int);
void sisip(int,int);
private:
int data;
linklist *berikut,*p;
};
linklist::linklist(){
p=NULL;
}
void linklist::tambah(int info){
linklist *q,*t;
if(p==NULL){
p=new linklist;
p->data=info;
p->berikut=NULL;
}else{
q=p;
while(q->berikut != NULL)
q=q->berikut;
t=new linklist;
t->data=info;
t->berikut=NULL;
q->berikut=t;
}
}
void linklist::tambahdepan(int nilai){
linklist *q;
q = new linklist;
q->data = nilai;
q->berikut = p;
p = q;
}
void linklist::tambahbelakang(int nilai){
linklist *q,*t;
if( p == NULL ) {
p = new linklist;
p->data = nilai;
p->berikut = NULL;
} else {
q = p;
while( q->berikut != NULL )
q = q->berikut;
t = new linklist;
t->data = nilai;
t->berikut = NULL;
q->berikut = t;
}
}
void linklist::tampil(){
linklist *i; for(i=p;i!=NULL;i=i->berikut){
cout<<i->data<<" "<<"-> ";
}
cout<<" NULL\n";
}
void linklist::hapus(int target){
linklist *q,*r;
q=p;
if(q->data==target){
p=q->berikut;
delete q;
return;
}
r=q;
while(q!=NULL){
if(q->data==target){
r->berikut=q->berikut;
delete q;
return;
}
r=q;
q=q->berikut;
}
cout<<"\nElemen "<<target<<" tidak ada.\n";
}
void linklist::sisip(int posisi,int nilai){
linklist *q,*t;
int i;
for(i=1,q=p;i<=posisi-1;i++){
q=q->berikut;
if(q==NULL){
cout<<"\nElemen lebih kecil dari "<<posisi<<"\n ";
return;
}
}
t=new linklist;
t->data=nilai;
t->berikut=q->berikut;
q->berikut=t;
}
int main(int argc, char *argv[]) {
system("color A");
linklist *link=new linklist;
int banyak;
cout<<"Banyak data: ";
cin>>banyak;
int data[banyak];
for(int i=0;i<banyak;i++){
cout<<"Data ke-"<<i+1<<": ";
cin>>data[i];
link->tambah(data[i]);
}
//link->tambah(a);
/*link->tambah(5);
link->tambah(7);*/
link->tampil();
// link->hapus(5);
//link->tampil();
int s,posisi;
cout<<"Nilai yang akan disisipkan: ";
cin>>s;
cout<<"Sisipkan pada index ke-: ";
cin>>posisi;
link->sisip(posisi,s);
link->tampil();
int del;
cout<<"Nilai yang akan dihapus: ";
cin>>del;
link->hapus(del);
link->tampil();
int depan;
cout<<"Tambah nilai di depan: ";
cin>>depan;
link->tambahdepan(depan);
link->tampil();
int belakang;
cout<<"Tambah nilai di belakang: ";
cin>>belakang;
link->tambahbelakang(belakang);
link->tampil();
cout<<endl;
system("PAUSE");
return EXIT_SUCCESS;
}
No comments:
Post a Comment