1. 程式人生 > 其它 >連結串列的插入與刪除

連結串列的插入與刪除

技術標籤:資料結構

在連結串列中,尤其是自己寫連結串列的時候,插入或者刪除常常會遇到各種問題。

例如:插入的時候第一個插到了第二個,插入最後一個的時候會出錯。

又或者在刪除的時候也有了類似的問題。

我也同樣如此,歸根到底,不過是演算法方面的問題,在我讀《資料結構》(C語言版)(嚴蔚敏)的時候,發現其中演算法非常妙,無論如何都不會出錯。

PS:該連結串列是帶頭結點的連結串列(C++)

連結串列的插入程式碼:

int LinkList::Insert_pos(int pos, int val)			//按位置插入
{
	Node* p = head;
	int j = 0;
	while (p &&
j < pos - 1)//尋找第pos-1個結點 { p = p->next; ++j; } if (!p || j > pos - 1)//pos小於1或者大於表長+1 { return 0; } Node* temp = new Node;//生成新結點 temp->data = val; //插入L中 temp->next = p->next; p->next = temp; return 1; }

連結串列的刪除程式碼:

int LinkList::Delete_pos(int pos)//按位置刪除
{
	Node* p =
head; int j = 0; while (p->next && j < pos - 1) {//尋找到第pos個結點,並另p指向他的前趨 p = p->next; ++j; } if (!p->next || j > pos - 1)//刪除位置不合理 { return 0; } Node* pDel = p->next;//刪除並釋放 p->next = pDel->next; delete pDel; return 1; }