問題描述 :
輸入若干(不超過100個)非負整數,建立乙個不帶頭結點的單向鍊錶。在輸入乙個位置index,從鍊錶中刪除第index個結點,輸出結果鍊錶。
請編寫deletenode函式,完成刪除操作。deletenode函式的原型如下:
struct student *
deletenode
(struct student *head,
int index)
形參:
struct student *head:鍊錶的頭指標,需要從這個鍊錶中刪除
int index:從鍊錶中刪除第index個結點。index從1開始編號。
返回值:
函式返回結果鍊錶的頭指標。
#include
using
namespace std;
struct student
;//從鍵盤讀入資料建立鍊錶,新結點插入到尾部
student *
createbytail()
p2->next=
null
;//最後乙個結點的next賦值為null
return head;
}//輸出鍊錶中的資訊(num)
void
displaylink
(struct student *head)
cout<<
"tail"
<}//刪除鍊錶中第index個結點。index從1開始。
//由於可能刪除第乙個結點,所以函式返回頭指標給主調函式
struct student *
deletenode
(struct student *head,
int index)
intmain()
}
輸入說明 :
首先輸入若干非負整數,每個整數作為資料放入乙個鍊錶結點中,輸入-1表示輸入結束。
然後輸入若干組整數,每組一行,每行僅包含乙個整數,表示需要刪除的結點的位置index。如:輸入1表示刪除鍊錶的第乙個(最前面乙個)結點。
輸出說明 :
對於每組輸入,輸出刪除第index個結點之後的結果鍊錶。輸出的資訊以head開頭,以tail結尾,以「–>」分隔。具體見輸出範例。
如果輸入的index超出了鍊錶的範圍,則不刪除,輸出原鍊錶。如果是空鍊錶,則直接輸出「head–>tail」。
輸入範例 :
1000 2342 8883 -143
11輸出範例 :
head–>1000–>2342–>8883–>tail
head–>1000–>2342–>tail
head–>2342–>tail
head–>tail
struct student *
deletenode
(struct student *head,
int index)
//索引越界,直接返回head
if(index <
1|| index > len +1)
//找到要刪除的節點
p = head;
while
(i != index)
//要刪除的是第乙個節點
if(p == head)
else
q->next = p-
>next;
}delete p;
return head;
}
刪除鍊錶第index個結點
問題描述 輸入若干 不超過100個 非負整數,建立乙個不帶頭結點的單向鍊錶。在輸入乙個位置index,從鍊錶中刪除第index個結點,輸出結果鍊錶。輸入說明 首先輸入若干非負整數,每個整數作為資料放入乙個鍊錶結點中,輸入 1表示輸入結束。然後輸入若干組整數,每組一行,每行僅包含乙個整數,表示需要刪除...
資料結構 刪除鍊錶第index個結點(鍊錶)
問題描述 輸入若干 不超過100個 非負整數,建立乙個不帶頭結點的單向鍊錶。在輸入乙個位置index,從鍊錶中刪除第index個結點,輸出結果鍊錶。請編寫deletenode函式,完成刪除操作。deletenode函式的原型如下 struct student deletenode struct st...
鍊錶 刪除鍊錶的倒數第 N 個結點
記錄 於leetcode 在對鍊錶進行操作時,一種常用的技巧是新增乙個啞節點 dummy node 它的next 指標指向鍊錶的頭節點。這樣一來,我們就不需要對頭節點進行特殊的判斷了。例如,在本題中,如果我們要刪除節點 y,我們需要知道節點 y 的前驅節點 x,並將 x 的指標指向 y 的後繼節點。...