Senin, 09 Juli 2012

Double linked list Non Circular


A.   Double linked list Non Circular
#include <iostream.h> //File Header Iostream
#include <conio.h> //File Header Conio
typedef struct TNode { //Deklarasi Linked List
int data;   //data bertipe integer
TNode *next; //pointer Next
};  //penutup deklarasi
TNode *head;  //disini menggunakan head sebagai pointer utama dari linked list
void init(){  //Fungsi untuk inisialisasi awal linked list
head=NULL;  //Untuk pertama kali, head bernilai NULL
}
int IsEmpty(){  //Fungsi untuk mengetahui apakah Linked list kosong atau ada isinya
if(head==NULL)  // apabila head==NULL, maka return 1
return 1;
else
return 0;  // Selain itu maka Return 0
}
void insertdepan(int n){ //Fungsi untuk menambahkan data baru (n didapat dari input di program utama (main))
TNode *baru;  //Disini menggunakan baru sebagai pointer TNode nya
baru=new TNode;
baru->data=n;  //pointer baru->data berisi nilai variabel n
baru->next=NULL;  // pointer baru->next berisi NULL
if(IsEmpty()==1){ //periksa apakah linked list bernilai, jika return 1(tidak bernilai), maka akan mengeksekusi perintah hingga ‘}’
head=baru; //Nilai head= Nilai baru
head->next=NULL;
}
else {   // Jika return 0(linked list bernilai), maka akan mengeksekusi perintah berikut hingga ‘}’
baru->next=head;
head=baru;
}
cout<<”Data Terisi”;
}
void insertbelakang(int n){    //Fungsi untuk insert Belakang(Menambahkan data di belakang data lama)
TNode *baru,*bantu;  //Pointer yang digunakan yaitu baru dan bantu
baru=new TNode;
baru->data=n;
baru->next=NULL;
if(IsEmpty()==1){
head=baru;
head->next=NULL;
}
else {
bantu=head;
while(bantu->next!=NULL){
bantu=bantu->next;
}
bantu->next=baru;
}
cout<<”Data Terisi”;
}
void tampil(){   //Fungsi untuk menampilkan linked list yang telah di input / di delete
TNode *bantu;  //pointer yang digunakan yaitu bantu
bantu=head;  // Nilai bantu= Nilai yang ada di head
if(IsEmpty()==0){  // periksa apakah return 0(bernilai)
while(bantu!=NULL){ //Selama bantu tidak sama dengan NULL, maka di eksekusi
cout<<bantu->data<<endl;  // tampilkan di monitor nilai bantu->data
bantu=bantu->next;  //Nilai bantu= nilai bantu selanjutnya
}
}
else
cout<<”Masih Kosong”<<endl;
}
void hapusdepan(){ //Fungsi untuk menghapus Nilai paling depan
TNode *hapus;
int d;
if(IsEmpty()==0){  //periksa apakah return 0(ada nilai)
if(head!=NULL){ // jika head tidak sama dengan Null maka :
hapus=head;  // pointer hapus= head
d=hapus->data;  //nilai dari d = nilai dari hapus->data
head=hapus->next;  // Nilai head sekarang berisi nilai hapus->next
delete hapus;  //fungsi untuk menghapus nilai yang ada  di pointer hapus
}
cout<<d<<” Terhapus”<<endl;
}
else
cout<<”Masih Kosong”<<endl;
}
main(){  // Fungsi Utama dari program
int pil;
do{
clrscr();
int n;
cout<<”1.Insert Depan”<<endl;
cout<<”2.Insert Belakang”<<endl;
cout<<”3.Display”<<endl;
cout<<”4.Delete”<<endl;
cout<<”5.Exit”<<endl;
cout<<”Masukan Pilihan Anda :”;pil=getche();
switch(pil){
case’1′: clrscr();
cout<<”Masukan data :”;cin>>n;
IsEmpty();
insertdepan(n);
break;
case’2′: clrscr();
cout<<”Masukan data :”;cin>>n;
IsEmpty();
insertbelakang(n);
break;
case’3′: clrscr();
IsEmpty();
tampil();
break;
case’4′: clrscr();
IsEmpty();
hapusdepan();
break;
}
getch();

Tidak ada komentar:

Posting Komentar