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();
}
|
EmoticonEmoticon