鍊錶的刪除和插入

2021-08-15 18:07:55 字數 1328 閱讀 8629

struct student *del(struct student * head, long num)

p1 = head;

while (num !== p1-> num && p1-> num !== null)

if (num == p1 -> num)

else p2 -> next = p1 -> next;

printf("delete:%ld\n" ,num);

n = n - 1;

}else

printf("%ld is not been found!",num);

return (head);

}

這個函式的大致演算法如下:

1.從第乙個結點開始找要刪除的num,如果不是執行p2 = p1,p1 -> next,如果是看第2。

2.要刪除的鍊錶是不是第乙個結點,如果是,還要將head指向原來鍊錶的第二個結點,如果不是,執行p2 ->next = p1 -> next。

3.鍊錶是否是乙個空鍊錶,或者在這個鍊錶中找不到要刪除的鍊錶。

- 鍊錶的插入

鍊錶的插入是將乙個結點插入已有的鍊錶中。

就像有乙個已經按公升高大小排好的乙個隊伍,但是來了乙個新同學,這個新同學要和第乙個同學比,如果比第乙個同學高就不能站在他前面,在和第二個同學比,如果還比第二個同學高也不能站在他前面,就這樣比下去,直到出現乙個同學i,新同學比同學i高,但比同學i+1低,那麼新同學就可以插在同學i和i+1之間。鍊錶的插入的過程是一樣的。

根據上面這個思路來實現鍊錶的插入:首先將p0指向待插入的結點,p1指向第乙個結點,看p0 -> num > p1 -> num,如果大於不能將p0 -> num插入到p1 -> num之前,將p1向後移動乙個結點,使p2指向剛才p1指向的那個結點,直到出現p0 -> num小於p1 -> num,然後再看此時p1是否指向head,如果指向head,執行head = p0, p0 -> next = p1,如果沒有指向head , 執行p2 -> next = p0, p0 -> next = p1。最後還要考慮,鍊錶是否為空,以及p0要插入到表尾之後,如果要插入到表尾之後,則執行p1 ->next = p0, p0 ->= null。

寫乙個插入結點的函式。

struct student * insert(struct student * head,struct student * stud)

else

if (p0 -> num <= p1 -> num)

else

n = n +

1; return (head);

}

鍊錶的插入和刪除

while null p ipnext i if null p i pos 1 while null p pnext ipnext i if null p pnext i pos 1 pos為位置,1.不正常執行 1 位置為 pos 1 依靠 i pos 1 來報錯,2 比鍊錶結點個數多 插入需要多...

靜態鍊錶的插入和刪除

靜態鍊錶相當於是用乙個陣列來實現線性表的鏈式儲存結構,在靜態鍊錶中操作的是陣列。結構體陣列 一 靜態鍊錶的插入操作 靜態鍊錶的插入操作包含兩部分,首先是獲得空閒量的下標,程式 如下 int getcur staticlinklist tan 要想更好的理解,最好結合乙個靜態列表的例項來掌握,下面給出...

鍊錶插入刪除

include include typedef struct node node,linklist void createlist linklist head 建立鍊錶 s node malloc sizeof node s next null s data data p next s p s in...