Friday, March 28, 2014

Contoh Hapus dalam Linked List

Hapus


Hai Teman-teman,di sini saya akan sharing sedikit tentang materi c++ yaitu mater tentang penhapusan data menggunakan linked list,fungsi hapus node dilakukan dengan memutus rantai node kemudian menghapus node. Jika node berada di tengah rangkaian,maka  rangkaian yang terputus perlu disambung kembali. Untuk memudahkan penghapusan simpul dibutuhkan 2 cursor sebagai simpul bantu. Selain cursor juga dibutuhkan simpul head sebagai acuan awal simpul dalam rangkaian.
Operasi hapus disini memiliki 2 operasi yaitu
  • hapus depan
  • hapus belakang
disini saya akan sharing sedikit tentang contoh program yang saya buat,smoga saja sobat mengerti dengan penjelasan saya.
Sebelum membaca kodingannya lebih baik sobat baca dulu keterangannya ya:
Node : rangkaian beberapa simpul
Single : artinya field pointer-nya hanya satu buah saja dan satu arah.
Linked List : artinya node-node tersebut saling terhubung satu sama lain.
Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar
HAPUS DEPAN
void hapusDepan (){
tnode *hapus;
int d;
      if (Isempty()==0){
      if(head->next != NULL){
          hapus = head;
          d =hapus->data;
          head = head->next;
          delete hapus;
          }
          else{
          d=head->data;
          head=NULL;
          }
          printf("%d terhapus\n",d);
          } else printf("Masih kosong\n");
          }
   
HAPUS BELAKANG
void hapusbelakang(){
tnode *hapus,*bantu;
int d;
      if (Isempty()==0){
      if(head->next!=NULL){
         bantu=head;
         while(bantu->next->next != head){
         bantu = bantu->next;
         }
        hapus=bantu->next;
         d =hapus->data;
         bantu->next=NULL;
         delete hapus;
         }
         else{
              d=head->data;
              head=NULL;
              }
         printf("%d terhapus\n",d);
      } else printf("Masih kosong\n");
        }    
HAPUS DEPAN DAN BELAKANG
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
typedef struct tnode{
        int data;
        tnode *next;
        };
        tnode *head;
void init(tnode **p){
     *p=NULL;
     }     
int Isempty(){
     if(head==NULL)
     return 1;
     else
     return 0;
     }
void insertdepan(int databaru){
     tnode *baru;
     baru=new tnode;
     baru->data=databaru;
     baru->next=NULL;
     if(Isempty()==1){
                      head=baru;
                      head->next=NULL;
                      }
     else{
          baru->next=head;
          head=baru;
          }
          printf("data masuk depan\n");
          }
void insertbelakang(int databaru){
     tnode *baru,*bantu;
     baru=new tnode;
     baru->data=databaru;
     baru->next=NULL;
     if(Isempty()==1){
                      head=baru;
                      head->next=NULL;
                      }
      else{
          bantu=head;
          while(bantu->next!=NULL){
          bantu=bantu->next;
          }
          bantu->next=baru;
          }
          printf("data masuk belakang\n");
          }
void hapusDepan (){
tnode *hapus;
int d;
      if (Isempty()==0){
      if(head->next != NULL){
          hapus = head;
          d =hapus->data;
          head = head->next;
          delete hapus;
          }
          else{
          d=head->data;
          head=NULL;
          }
          printf("%d terhapus\n",d);
          } else printf("Masih kosong\n");
          }
void hapusbelakang(){
tnode *hapus,*bantu;
int d;
      if (Isempty()==0){
      if(head->next!=NULL){
         bantu=head;
         while(bantu->next->next != head){
         bantu = bantu->next;
         }
        hapus=bantu->next;
         d =hapus->data;
         bantu->next=NULL;
         delete hapus;
         }
         else{
              d=head->data;
              head=NULL;
              }
         printf("%d terhapus\n",d);
      } else printf("Masih kosong\n");
        }
void tampil(){
     tnode *bantu;
     bantu=head;
     if(Isempty()==0){
                      while(bantu!=0){
                                      cout<<bantu->data<<" ";
                                      bantu=bantu->next;
                                      }
                                      printf("\n");}
                                      else
                                      printf("masih kosong\n");
                                      }
int main(){
  tnode *head;
    init(&head);
    insertdepan(10);
    insertbelakang(20);
    hapusDepan();
    hapusbelakang();
    tampil();
    getch();
}
   

Artikel Terkait

This Is The Oldest Page


EmoticonEmoticon