錯誤示範
struct node * delnode(struct node*head,int x)
struct node* p=head;
struct node* pre=null;
int find=0;
while (p!=null)
pre = p; //pre記錄目標節點的前乙個
p=p->next;
}if (find==0) //2、沒有要找的節點
if (p->next==null) //要找的節點在末尾
else
free(p);
}else //要找的不在末尾 這種處理 能包含首節點嗎??當然不能 首節點則pre==null
return head;
}分幾類
/*1、空鍊錶
2、沒有找到目標
3、首節點
4、尾節點
5、中間節點
注意 首節點的處理是讓head=head->next;包含了只有乙個節點的情況
*/
C語言 刪除鍊錶中的重複節點(一)
假設要將重複的節點刪除至只剩乙個。思路 設定兩個指標,乙個先指向頭節點 假設為pointer指標 乙個指向頭節點的next 假設為s指標 比較pointer和s的val pointer val 等於 s val 判斷s的next是否為空 a.s的next不為空 用s next的val覆蓋s的val,...
C語言鍊錶節點插入與刪除
順序表是我們資料結構中的基本儲存形式,現在給定乙個順序表,有如下操作 insert x y 在順序表中x位置插入y元素,遍歷輸出當前順序表的所有元素。delete x 刪除順序表中的x元素,如果有多個x元素,只刪除第乙個x,遍歷輸出當前順序的所有元素。locate x 輸出順序表中x元素的所在的位置...
刪除鍊錶中的節點
請編寫乙個函式,使其可以刪除某個鍊錶中給定的 非末尾 節點,你將只被給定要求被刪除的節點。現有乙個鍊錶 head 4,5,1,9 它可以表示為 4 5 1 9示例 1 輸入 head 4,5,1,9 node 5 輸出 4,1,9 解釋 給定你鍊錶中值為 5 的第二個節點,那麼在呼叫了你的函式之後,...