Edisi pembelajaran bahasa Indonesia. Kode dan keluarannya tetap seperti aslinya.
Doubly linked list dalam C
Pertahankan tautan maju dan mundur saat menyisipkan atau menghapus node.

Node memiliki next dan prev. Hal ini memungkinkan penelusuran ke dua arah, tetapi membutuhkan pointer tambahan dan pembaruan tautan yang konsisten pada setiap operasi.
Saat menyisipkan di antara dua node, hubungkan kedua sisi dan perbaiki tautan baliknya. Saat menghapus, hubungkan tetangganya sebelum membebaskan node. Node pertama tidak memiliki pendahulu dan node terakhir tidak memiliki penerus.
Periksa konsistensi dengan menelusuri maju dan mundur. Uji penghapusan head, tail, serta satu-satunya node. Bebaskan seluruh objek yang dialokasikan setelah selesai.
Kode C
#include <stdio.h>
#include <stdlib.h>
typedef struct DNode {
int data;
struct DNode *prev;
struct DNode *next;
} DNode;
DNode* insertHead(DNode *head, int val) {
DNode *newNode = (DNode *)malloc(sizeof(DNode));
newNode->data = val;
newNode->prev = NULL;
newNode->next = head;
if (head != NULL) head->prev = newNode;
return newNode;
}
void printForward(DNode *head) {
DNode *curr = head;
while (curr != NULL) {
printf("%d <-> ", curr->data);
curr = curr->next;
}
printf("NULL\n");
}
void freeDList(DNode *head) {
DNode *curr = head;
while (curr != NULL) {
DNode *temp = curr;
curr = curr->next;
free(temp);
}
}
int main() {
DNode *head = NULL;
head = insertHead(head, 300);
head = insertHead(head, 200);
head = insertHead(head, 100);
printf("Doubly Linked List: ");
printForward(head);
freeDList(head);
return 0;
}Buka di kompilerKeluaran yang diharapkan
Doubly Linked List: 100 <-> 200 <-> 300 <-> NULL
Pertanyaan umum
Mengapa kode dan keluarannya tetap dalam bahasa Inggris?
Kata kunci, pengenal, dan teks yang diperiksa tes dipertahankan agar program tidak berubah. Penjelasan dan kontrol telah diterjemahkan.