1. 程式人生 > >連結串列中的頭和尾節點/指標的常規用法(來自:演算法:C語言實現)

連結串列中的頭和尾節點/指標的常規用法(來自:演算法:C語言實現)

下面是基本連結串列處理操作的5種常規用法的實現.這類程式碼用於內嵌連結串列處理程式碼的簡單應用中

迴圈,永遠非空

頭插入 head->next = head;
在x節點後插入t節點 t->next = x->next, x->next = t;
刪除x後的節點 t = x->next, x->next = t->next, free(t);
遍歷迴圈 t = head; do{ ... t = t->next}
                  while(t != head);
測試是否只有一個元素 if(head->next == head)

頭指標,尾節點為空

初始化 head = NULL;
在x節點後插入t節點 if(x == NULL){head = t, head->next == NULL;}
                  else{t->next = x->next, x->next = t;}
刪除x後的節點 t = x->next, x->next = t->next, free(t);
遍歷迴圈 t = head; while(t){... t = t->next;}
測試表是否為空 if(head == NULL)

有啞元頭結點,尾節點為空

初始化 head->next = NULL;
在x節點後插入t節點 t->next = x->next, x->next = t;
刪除x節點後的節點 t = x->next, x->next = t->next, free(t);
遍歷迴圈 t = head->next; while(t){... t = t->next;}
測試表是否為空 if(head->next == NULL)

有啞元頭,尾結點

初始化 head->next = rear, rear->next = rear;
在x節點後插入t節點 t->next = x->next, x->next = t;
刪除x後的節點 t = x->next, x->next = t->next, free(t);
遍歷迴圈 t = head; while(t->next != rear){... t = t->next;}
測試表是否為空 if(head->next == rear)