Subscribe:

Jumat, 19 April 2013

Program Single Linked List C++



#include
#include

typedef struct simpul tsimpul;
struct simpul
{
char nilai[20];
   tsimpul *selanjutnya;
};
tsimpul *awal = NULL, *akhir = NULL, *data;

void tampilkan(){
tsimpul *b1=awal;
   if(awal!=NULL){
    cout<<"Isi Data ==>  ";
    while(b1!=NULL)
    {
    cout<nilai;
      b1=b1->selanjutnya;
      cout<<"  ";
    }
   }else
    cout<<"Data Masih Kosong . . . . ";
}
void t_awal(char *in){
data=new simpul;
   strcpy(data->nilai,in);
//   =in;
   data->selanjutnya=NULL;
   if(awal==NULL){
    awal=akhir=data;
   }else{
    data->selanjutnya=awal;
      awal=data;
   }
}
void t_akhir(char *in){
   data=new simpul;
   strcpy(data->nilai,in);
   data->selanjutnya=NULL;
   if(awal==NULL)
    awal=akhir=NULL;
   else{
    akhir->selanjutnya=data;
      akhir=data;
   }
}
void t_tengahh(char *in,char *setelah){
tsimpul *b1=awal;
   tsimpul *b2=b1->selanjutnya;
   char ada=1;
   while (b1 != NULL){
   //fungsi dari string.h ^_^v
        if (strcmp(b1->nilai,setelah)== 0){
            ada=0;
            break;
 }
        b1 = b1->selanjutnya;
        if(b1!=NULL)
        b2= b2->selanjutnya;
    }
   if(ada==1){
    gotoxy(1,21);
      cout<<"Ke Sallahan Data Yang Di Masukkan Tidak Falid";
   }else{
    data=new simpul;
   strcpy(data->nilai,in);
      b1->selanjutnya=data;
      data->selanjutnya=b2;
      if(data->selanjutnya==NULL){
         akhir=data;
      }
   }
}

void ubah_(char *in,char *pos){
tsimpul *b= awal;
   char ada=1;
while(b!=NULL){
if(strcmp(b->nilai,pos)== 0){
      ada=0;
            break;
      }
      b=b->selanjutnya;
   }
   if(ada==1){
      gotoxy(1,21);
      cout<<"Ke Sallahan Data Yang Di Masukkan Tidak Falid";
   }else{
   strcpy(b->nilai,in);
   }
}

void  h_awal(){
tsimpul *b1=awal;
if(awal==akhir){
    delete  awal;
      awal=akhir=NULL;
   }else{
b1=awal->selanjutnya;
      delete awal;
      awal=b1;
   }

}
void h_akhir(){
tsimpul *b1=awal;
   if(awal==akhir){
delete  awal;
      awal=akhir=NULL;
   }else{
      while(b1->selanjutnya!=akhir)
      b1=b1->selanjutnya;
      delete akhir;
      b1->selanjutnya=NULL;
      akhir=b1;
   }
}

void h_tengahh(char *deleta){
tsimpul *b1=awal;
   tsimpul *b2=b1->selanjutnya;
   char ada=1;
   while (b1 != NULL){
        if (strcmp(b1->selanjutnya->nilai,deleta)== 0){
            ada=0;
            break;
 }
        b1 = b1->selanjutnya;
        if(b1!=NULL)
        b2=b2->selanjutnya;
    }
   if(ada==1){
    gotoxy(1,21);
      cout<<"Ke Sallahan Data Yang Di Masukkan Tidak Falid";
   }else{
      tsimpul *b3=b2->selanjutnya;
      delete b2;
      b1->selanjutnya=b3;
      if(b1->selanjutnya==NULL){
         akhir=data;
      }
   }

}

main(){
   int pil;
  atas:
   tampilkan();
   gotoxy(1,9);cout<<"--Menu--";
   gotoxy(1,10);cout<<"1. Tambah Awal ";
   gotoxy(1,11);cout<<"2. Tambah Tengah ";
   gotoxy(1,12);cout<<"3. Tambah Akhir ";
   gotoxy(1,13);cout<<"4. Hapus Awal";
   gotoxy(1,14);cout<<"5. Hapus Tengah";
   gotoxy(1,15);cout<<"6. Hapus Akhir";
   gotoxy(1,16);cout<<"7. Ubah Data";
   gotoxy(1,17);cout<<"Masukkan Pilihan Anda : ";
   cin>>pil;

   char angka[20];
   char setelaha[20];
   gotoxy(1,19);
   switch(pil){
        case 1:
        cout<<"Masukkan Nama : ";cin>>angka;
          t_awal(angka);
            break;
        case 2:
        cout<<"Masukkan Nama : ";cin>>angka;
            gotoxy(1,20);cout<<"Di Masukkan Setellah : ";cin>>setelaha;
          t_tengahh(angka,setelaha);
            break;
        case 3:
        cout<<"Masukkan Nama : ";cin>>angka;
            t_akhir(angka);
            break;
        case 4:
        if(awal!=NULL)
            h_awal();
            break;
        case 5:
        char deletaa[20];
            gotoxy(1,19);cout<<"Yang Akan Di Hapus : ";cin>>deletaa;
          h_tengahh(deletaa);
            break;
        case 6:
        if(awal!=NULL)
            h_akhir();
            break;
        case 7:

        cout<<"Masukkan Nama : ";cin>>angka;
            gotoxy(1,20);cout<<"Di Masukkan Nilai Yang Akan Dirubah : ";cin>>setelaha;
          ubah_(angka,setelaha);
            break;
        default:
        gotoxy(1,21);cout<<"Inputan Salah . . .";
            break;
   }
   goto atas;
}



0 komentar: