2 在鍊錶指定位置插入結點 c

2021-10-07 15:39:59 字數 1958 閱讀 9317

問題描述 :

輸入若干(不超過100個)非負整數,建立乙個不帶頭結點的單向鍊錶。

再輸入乙個位置index以及乙個資料data,程式中首先建立乙個新結點s,s的資料成員為data,然後呼叫函式insertnode將s插入到鍊錶的指定位置index處,最後輸出結果鍊錶。

請編寫insertnode函式,完成插入操作。insertnode函式的原型如下:

struct student *insertnode(struct student *head, struct student *s, int index)

形參:struct student *head:鍊錶的頭指標,需要插入到這個鍊錶中

struct student *s:指向需要插入的結點

int index:插入位置。index從1開始編號。如果鍊錶中已有n個結點,則index的有效範圍為 1<= index <= n+1。

返回值:

函式返回結果鍊錶的頭指標。

輸入說明 :

首先輸入若干非負整數,每個整數作為資料放入乙個鍊錶結點中,輸入-1表示輸入結束。

然後輸入若干組整數,每組一行,每行包含兩個整數,第乙個表示需要插入位置index,第二個為新結點的資料。如:輸入「1 5」表示在鍊錶的第乙個位置(最前面)插入乙個結點,結點的資料為5。

輸出說明 :

對於每組輸入,輸出插入結點之後的結果鍊錶。輸出的資訊以head開頭,以tail結尾,以「–>」分隔。具體見輸出範例。

如果輸入的index超出了鍊錶的範圍(如果鍊錶中已有n個結點,則index的有效範圍為 1<= index <= n+1),則不插入,輸出原鍊錶。如果是空鍊錶,則直接輸出「head–>tail」。

輸入範例:

1 2 3 -1

1 10

3 20

輸出範例:

head–>10–>1–>2–>3–>tail

head–>10–>1–>20–>2–>3–>tail

#include

#include

struct student

;//從鍵盤讀入資料建立鍊錶,新結點插入到尾部

struct student *

createbytail()

p2->next=

null

;//最後乙個結點的next賦值為null

return head;

}//輸出鍊錶中的資訊(num)

void

displaylink

(struct student *head)

printf

("tail\n");

}//在鍊錶中第index處插入s指標所指向的結點。index從1開始。

//由於可能插在第乙個結點,所以函式返回頭指標給主調函式

struct student *

insertnode

(struct student *head,

struct student *s,

int index)

struct student *p1,

*p2;

p1=s;

p2=head;

if(index<=n+1)

else

if(index==2)

else

if(index!=0)

}return head;

}int

main()

return0;

}

幾個測試用例要注意:

1、

輸入-1

2 1輸出

head–>tail

2、超出n+1要返回原鍊錶

3、沒有n=0的插入

鍊錶之指定位置插入

指定位置插入 做這種查詢類的插入,先不要著急建立節點,要考慮沒找到的情況,沒找到就不需要建立節點 include struct node 建立頭節點 struct node createhead headnode next null return headnode 建立節點,方便使用者插入資料 st...

在指定位置插入字元

下列給定程式中,函式fun的功能是 在形參s所指字串中尋找與引數c相同的字元,並在其後插入乙個與之相同的字元,若找不到相同的字元則不做任何處理。例如,若s所指字串為 baacda c中的字元為a,執行後s所指字串為 baaaacdaa 請在程式的下畫線處填入正確的內容並將下畫線刪除,使程式得出正確的...

單向鍊錶 三 在指定位置插入新的節點

1 要向鍊錶中插入新的資料,就要插入乙個新的節點,下面是一幅示意圖 2 說明 原始鍊錶為1 2 3 4 null,新增乙個資料 5 至第3個節點,只要使第2個節點指向新節點 值為5的節點 使新節點指向原來的第3個節點 值為3的節點 就行了。3 更通俗地講,就是在 2 與 3 之間的 紅色箭頭 上新增...