Friday, February 10, 2012

Program Linklist

#include <cstdlib>
#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