問題描述 :
輸入若干(不超過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 之間的 紅色箭頭 上新增...