連結串列中的頭和尾節點/指標的常規用法(來自:演算法:C語言實現)
阿新 • • 發佈:2019-02-04
下面是基本連結串列處理操作的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)