Jumat, 21 Maret 2014

Program untuk menghapus suatu elemen yang banyaknya lebih dari satu dalam sekali penghapusan



#include<iostream.h>
#include<conio.h>
#include<stdlib.h>
typedef struct node *simpul;
struct node
     {
     char ISI;
      simpul KANAN ;
      simpul KIRI;
   };
   void sisip_depan(simpul &PS,char elemen);
   void Cetak(simpul AB);
   void Hapus(simpul &AB,char elemen);
   main()
   {
     simpul AB=NULL;
   char masukkan,simpul;
   int i;
   cout<<”\n******Alexander Simanullang ******* “;
   cout<<"\nOperasi Single Linked List ";
   cout<<"\nProgram Menghapus Simpul ";
   cout<<endl<<endl;
   for(i=1;i<=8;i++)
   {
    cout<<"Masukkan Nilai Disisip = ";
    cin>>masukkan;
    sisip_depan(AB,masukkan);
   }
   Cetak(AB);
   cout<<endl;
   cout<<"Hapus Bilangan =";
   cin>>simpul;
   Hapus(AB,simpul);
   Cetak(AB);

    getch();
   }
   void sisip_depan(simpul &AB,char elemen)
   {
     simpul baru;
      baru=(simpul) malloc (sizeof(simpul));
      baru->ISI=elemen;
      baru->KANAN=NULL;
      baru->KIRI=NULL;
      if(AB==NULL)
 AB=baru;
      else
           {
           baru->KANAN=AB;
            AB->KIRI=baru;
            AB=baru;
         }
   }
   void Cetak(simpul AB)
   {
    simpul bantu;
    if(AB==NULL)
cout<<"Linked List Sedang  Kosong...."<<endl;
    else
    {
       bantu=AB;
       cout<<"Isi Linked List Sekarang : ";
       while(bantu->KANAN != NULL)
     {
        cout<<bantu->ISI<<" <= => ";
        bantu=bantu->KANAN;
       }
  cout<<bantu->ISI;
      }   }

   void Hapus(simpul &AB,char elemen)
   {
    simpul hapus;
    if(PS==NULL)
    cout<<"likend list sedang kosong..............";
    else
    {
    hapus=AB;
    while(hapus->KANAN != NULL)
    hapus=hapus->KANAN;
    if(hapus->ISI == elemen)
    {
    hapus->KIRI->KANAN=NULL;
    hapus->KIRI=NULL;
    free(hapus);
    }
     while(AB->KIRI !=NULL)
           AB=AB->KIRI;
    while(AB->KANAN != NULL)
    {
    if(AB->ISI== elemen)
{
           hapus=AB;
           AB=AB->KANAN;
           AB->KIRI =NULL;
           hapus->KANAN=NULL;
           free(hapus);
           }
         else if(AB->KANAN->ISI == elemen)
         {
          hapus=AB->KANAN;
          AB->KANAN->KANAN->KIRI=AB;
          AB->KANAN=AB->KANAN->KANAN;
          hapus->KANAN=NULL;
          hapus->KIRI=NULL;
          free(hapus);
          while(AB->KIRI !=NULL)
          AB=AB->KIRI;

      }
  
else
     AB=AB->KANAN;
    }
     while(AB->KIRI !=NULL)
           AB=AB->KIRI;

    }
    }
 

Tidak ada komentar: