Linked List 2
Linked List 2
Deklarasi Simpul
Cara mendeklarasikan sebuah simpul dalam double linked list adalah sebagai berikut :
Struct DoubleLinkNode
{
Int bil;
Struct DoubleLinkNode *back
Struct DoubleLinkNode *next
};
Struct DoubleLinkNodeRec *Node
//mendefinisikan fungsi untuk menambahkan elemen pada bagian akhir dari linked list
void TambahDiAkhir(struct node **s, int nilai){
struct node *temp, *bantu;
if (*s !=NULL) {
bantu = *s;
//mendapatkan elemen paling akhir sebelum linked list ditambah elemen baru
while (bantu->next !=NULL) {
bantu = bantu->next;
}
//pointer next dari elemen akhir menunjuk ke alamat dari elemen baru
bantu->next = temp;
} else {
*s = (struct node *)malloc(sizeof(struct node));
(*s)->prev = NULL;
(*s)->data = nilai;
(*s)->next = NULL;
}
}
//mendefinisikan fungsi untuk menampikan nilai yang terdapat pada linked list
void TampilkanNilai (struct node *s){
while (s !=NULL) {
printf("%d\n",s->data);
s = s->next;
}
}
//fungsi utama
int main (void){
struct node *ptr;
Hasil Keluaran
Latihan :
Buatlah double linked list yang mencetak angka forward/maju dan kebalikannya/reverse
dengan hasil output sebagai berikut :
Circular Linked List
Circular linked list adalah list yang jika ditelusuri maka nantinya akan kembali ke simpul
pertama dan tidak berhenti pada simpul akhir. Kelebihan linked list ini adalah setiap simpul
dari list ini dapat dicapai dari sembarang simpul yang lain.
Circular linked list dapat diilustrasikan sebagai berikut :
struct node{
int data;
struct node *next;
};
temp->next = pNew;
pNew->next = pList;
pList = pNew;
}
}
void cetak(){
node *pWalker = pList;
node *pNext = NULL;
while(pNext != pList){
printf("pWalker = %d, ", pWalker->data);
pNext = pWalker->next;
pWalker = pNext;
printf("pWalker->next = %d \n", pWalker->data);
}
void hapusAwal(){
node *pEnd, *pHapus;
pEnd=pList;
pHapus=pList;
while(pEnd->next!=pList){
pEnd=pEnd->next;}
pEnd->next=pHapus->next;
pList=pList->next;
free(pHapus);
}
void hapusTengah(){
node *pCari,*pPre;int hapus;
pPre=pList;
pCari=pList;
cetak();
printf("masukkan bilangan yang ingin dihapus: "); scanf("%d",&hapus);
while(pCari->data!=hapus){
pCari=pCari->next; }
while(pPre->next!=pCari){
pPre=pPre->next;}
pPre->next=pCari->next;
free(pCari);
}
void hapusAkhir(){
node *pEnd,*pPre;
pEnd=pList;
pPre=pList;
while(pEnd->next!=pList){
pEnd=pEnd->next;}
while(pPre->next!=pEnd){
pPre=pPre->next;}
pPre->next=pList;
free(pEnd);
}
}while(pilih!=8);
printf("\n");
system("PAUSE");
return 0;}