迴圈有序鍊錶的插入

2022-03-23 15:47:44 字數 890 閱讀 4566

給定迴圈公升序列表中的乙個點,寫乙個函式向這個列表中插入乙個新元素,使這個列表仍然是迴圈公升序的。給定的可以是這個列表中任意乙個頂點的指標,並不一定是這個列表中最小元素的指標。

如果有多個滿足條件的插入位置,你可以選擇任意乙個位置插入新的值,插入後整個列表仍然保持有序。

如果列表為空(給定的節點是 null),你需要建立乙個迴圈有序列表並返回這個點。否則。請返回原先給定的節點。

下面的例子可以幫你更好的理解這個問題:

在上圖中,有乙個包含三個元素的迴圈有序列表,你獲得值為 3 的節點的指標,我們需要向表中插入元素 2。

新插入的節點應該在 1 和 3 之間,插入之後,整個列表如上圖所示,最後返回節點 3。

解答1:

public

static node insert(node head, int

insertval)

/*記錄最大值節點

*/node max =head;

node temp =head;

while (temp.next !=head)

temp =next;

if (temp.val >=max.val)

}if (temp.val <= insertval && insertval <=temp.next.val)

/*沒有滿足公升序的節點,將insertval插入到最大值節點後面

*/node next =max.next;

max.next =ins;

ins.next =next;

return

head;

}

view code

有序的迴圈鍊錶中插入結點

給定乙個有序的迴圈鍊錶,在其中插入乙個值,保持該迴圈鍊錶依然有序。首先看下迴圈鍊錶的結構,如下圖所示為乙個迴圈鍊錶,其尾結點指向頭結點,從而形成乙個迴圈。給定的鍊錶結點可以是鍊錶任意乙個結點,這個結點不一定是煉表頭結點,從而這也增加了該題的難度。此時若是要在鍊錶中插入4,則插入後的鍊錶如下所示 可以...

有序鍊錶的插入

已知乙個遞增有序鍊錶l 帶頭結點,元素為整數 編寫程式將乙個新整數插入到l中,並保持l的有序 輸入 輸入分三行 第一行 元素個數 第二行 元素的值,元素間用空格分隔。第三行 待插入的元素值 輸出 開頭有空格 code include include include 函式狀態碼定義 define tr...

有序鍊錶的插入

已知乙個遞增有序鍊錶l 帶頭結點,元素為整數 編寫程式將乙個新整數插入到l中,並保持l的有序性。其中單鏈表的型別定義參考如下 typedef int elementtype typedef struct lnode lnode,linklist 輸入分三行 第一行 元素個數 第二行 元素的值,元素間...