Pages

Senin, 09 April 2012

LINK LIST

#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[])

linklist post;
    cout << "isi data"<<endl;
    post.tambah(9);
    post.tambah(7);
    post.tambah(2);
    post.tambah(6);
    post.tambah(13);
    post.tambah(19);
    post.tambah(1);
    post.tambah(17);
    post.tambah(15);
    post.tambah(11);
    post.tambah(5);
    post.tambah(31);
    post.tampil();
   
    cout << "hapus data 13"<<endl;
    post.hapus(13);
    post.tampil();
    cout << "\nhapus data 11"<<endl;
     post.hapus(11);
     post.tampil();
     cout << "\nhapus data 2"<<endl;
     post.hapus(2);
     post.tampil();
     cout << "\nhapus data 19"<<endl;
     post.hapus(19);
     post.tampil();
     cout << "\nsisip data 99 pada posisi ke 5"<<endl;
     post.sisip(4,99);
     post.tampil();
     cout << "\nsisip data 35 pada posisi ke 3"<<endl;
     post.sisip(2,35);
     post.tampil();
     cout << "\nsisip data 73 pada posisi ke 7"<<endl;
     post.sisip(6,73);
     post.tampil();
     cout << "\ntambah data 23 di depan"<<endl;
     post.tambahdepan(23);
     post.tampil();
    
     cout << "\ntambah data 89 di belakang"<<endl;
     post.tambahbelakang(89);
     post.tampil();
    


{

    system("PAUSE");
    return EXIT_SUCCESS;
}

0 komentar:

Posting Komentar