本表對基本煉表處理操作分別以五種常用的定義方案給出其實現方法。這類**用於簡單的、使用內嵌煉表處理**的應用程式。
迴圈,永遠非空
頭插入 head->next = head;
在x節點後插入t節點 t->next = x->next; x->next = t;
刪除x後的節點 x->next = x->next->next;
遍歷迴圈 t = head; do while (t != head);
測試是否只有乙個元素 if (head->next == head)
有頭節點,尾節點為null
初始化 head = 0;
在x節點後插入t節點 if (x == 0)
else
刪除x後的節點 t = x->next; x->next = t->next;
遍歷迴圈 for (t = head; t != 0; t = t->next)
測試是否為空 if (head == 0)
有啞元頭節點,尾節點為null
初始化 head = new node; head->next = 0;
在x節點後插入t節點 t->next = x->next; x->next = t;
刪除x後的節點 t = x->next; x->next = t->next;
遍歷迴圈 for (t = head->next; t != 0; t = t->next)
測試是否為空 if (head->next == 0)
有啞元頭節點和尾節點
初始化 head = new node;
z = new node;
head->next = z; z->next = z;
在x節點後插入t節點 t->next = x->next; x->next = t;
刪除x後的節點 x->next = x->next->next;
遍歷迴圈 for (t = head->next; t != z; t = t->next)
測試是否為空 if (head->next == z)
鍊錶 刪除鍊錶的節點
劍指offer的乙個題,題目是要求在最少的時間內刪除鍊錶的節點。問題分析 對於鍊錶的刪除,按照劍指offer的一貫思路就是展開討論 1 空鍊錶咋辦 待刪除的節點是空節點咋辦 2 要刪除的節點在鍊錶中的位置有三種情況 1 鍊錶只有乙個節點,待刪除節點是表頭又是尾節點 2 鍊錶有多個節點,待刪除的節點是...
帶頭節點的鍊錶
include include includetypedef int type typedef struct node node 建立乙個頭節點並將其指標返回 node node init 列印乙個鍊錶 void node display node head else printf n 找到第n個節...
刪除鍊錶的節點
本題最大的要求是 在時間複雜度為o 1 的要求內刪除 給出的節點 如按照 通常演算法 依次遍歷,找到 給定節點的前節點,時間複雜度為o n 不符合要求 所以肯定不能遍歷鍊錶 思路 假設該節點p肯定在鍊錶內,那麼只用找到 該節點的後續節點q,將其賦值給當前結點,然後將p 指向q的下乙個節點 最後刪除q...