SINGLE LINKED LIST NON CIRCULAR
*TAMBAH TENGAH, HAPUS TENGAH, PRINT
struct node {
int data;
node *next;
}*head,
*tail,*baru,*bantu,*ins,*hapus;
void insert_tengah(int k)
{
int count = 2,
pos;
baru=new node; //membuat node baru
baru->data=k; //masukkan data ke
node
baru->next=NULL;
cout<<"Masukan data pada posisi ke = "; cin>>pos;
//masukkan node ke posisi
bantu=head;
while(bantu){
if(count == pos) //berhenti di posisi
sebelum node yang akan ditambahkan
{
baru->next=bantu->next; //baru->next mengarah seperti arah
bantu->next
bantu->next=baru;
//bantu->next mengarah ke baru
break; //menghentikan while-do
}
bantu=bantu->next; //pindah ke node selanjutnya
count++;
}
}
void
hapus_tengah(int number){
int count=1;
bantu=head;
while(bantu){
if(count==number-1){ //berhenti di
posisi sebelum node yang akan dihapus
hapus=bantu->next; //hapus menjadi node setelah bantu
bantu->next=hapus->next; //bantu->next mengarah sama seperti
hapus->next
hapus->next=NULL; //hapus->next NULL
delete hapus; //delete hapus
break;
}
count++;
}
cout<<"\ndata "<<temp<<"
pada urutan ke-"<<number<<" terhapus\n";
}
Void print(){
bantu=head;
while(bantu){
cout<<"["<<bantu->data<<"] ";
bantu=bantu->next;
}
}
DOUBLY LINKED LIST NON CIRCULAR
*TAMBAH TENGAH, HAPUS TENGAH, PRINT FORWARD &
PRINT BACKWARD
struct node {
int data;
node *next, *prev;
}*head, *tail,*p,*bantu,*ins,*hapus;
void
insert_tengah(int k)
{
int count = 2, pos;
baru=new node; //membuat node baru
baru->data=k; //masukkan data ke node
baru->next=NULL;
baru->prev=NULL
cout<<"Masukan data pada posisi
ke = "; cin>>pos; //masukkan node ke posisi
bantu=head;
while(bantu){
if(count == pos) //berheenti
di posisi sebelum node yang akan ditambahkan
{
baru->next=bantu->next; //baru->next mengarah seperti arah
bantu->next
bantu->next->prev=baru; //node setelah bantu prevnya mengarah ke
node baru
baru->prev=bantu; //baru->prev mengarah ke bantu
bantu->next=baru; //bantu->next mengarah ke baru
break;
//menghentikan while-do
}
bantu=bantu->next;
//pindah ke node selanjutnya
count++;
}
}
void
hapus_tengah(int number){
int count=1;
bantu=head;
while(bantu){
if(count==number-1){ //berhenti di
posisi sebelum node yang akan dihapus
hapus=bantu->next; //hapus menjadi node
setelah bantu
hapus->next->prev=bantu; //node setelah hapus prevnya mengarah ke
bantu
bantu->next=hapus->next; //bantu->next mengarah sama seperti hapus->next
hapus->next=hapus->prev=NULL; //hapus->next dan hapus->prev
NULL
delete hapus;
//delete hapus
break;
}
count++;
}
cout<<"\ndata
"<<temp<<" pada urutan
ke-"<<number<<" terhapus\n";
}
Void print_forward(){
bantu=head;
while(bantu){
cout<<"["<<bantu->data<<"] ";
//print dimulai dari depan
bantu=bantu->next; //pindah ke belakang dan seterusnya
}
}
Void print_backward(){
bantu=tail;
while(bantu){
cout<<"["<<bantu->data<<"] ";
//print dimulai dari belakang
bantu=bantu->prev; //pindah ke depan dan seterusnya
}
}
SINGLE LINKED LIST CIRCULAR
*PRINT
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR
DOUBLY LINKED LIST CIRCULAR
*PRINT
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR
SINGLE LINKED LIST CIRCULAR
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR
Void print_circular(){
bantu=head;
do{ //eksekusi terlebih dahulu setelah
itu di cek
cout<<"["<<bantu->data<<"] ";
bantu=bantu->next;
}while(bantu!=head); //berhenti ketika
bantu sama dengan head
}
DOUBLY LINKED LIST CIRCULAR
NOTE : TAMBAH TENGAH DAN HAPUS TENGAH SAMA DENGAN YANG NON-CIRCULAR
Void print_forward_circular(){
bantu=head;
do{ //eksekusi terlebih dahulu setelah
itu di cek
cout<<"["<<bantu->data<<"] ";
//print dimulai dari depan
bantu=bantu->next; //pindah ke belakang dan seterusnya
}while(bantu!=head); //berhenti ketika
bantu sama dengan head
}
Void print_backward_circular(){
bantu=tail;
do{ //eksekusi terlebih dahulu setelah
itu di cek
cout<<"["<<bantu->data<<"] ";
//print dimulai dari belakang
bantu=bantu->prev; //pindah ke depan dan seterusnya
}while(bantu!=tail); //berhenti ketika
bantu sama dengan tail
}
0 komentar:
Posting Komentar