天天看點

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)