乙個有序的環形單鏈表,從頭節點開始公升序,同時由最後乙個結點指回頭節點,給定乙個環形鍊錶的頭節點和乙個數值num,建立乙個數值為num的新節點,將該節點插入到環形單鏈表中,要求鍊錶始終有序
這道題就是簡單的遍歷環形單鏈表,然後插入新節點,只需要考慮一些特殊情況即可
鍊錶為空:新節點成環返回
鍊錶正常,且新節點插在中間:正常插入
鍊錶正常,但新節點的值會影響鍊錶的有序:將新節點插在最後乙個結點和頭節點的中間(這裡需要注意返回的頭節點需要看頭節點的值和新節點誰的值小,誰的值小誰作為head返回)
解法:鍊錶的遍歷
**:
public static node insertnum(node head,int num)
node pre = head;
node cur = head.next;
while(cur != head)
// 更新pre和cur
pre = pre.next;
cur = cur.next;
} if(cur == head)
return head.value > num ? newnode : head;
}
**解析:就是對環形單鏈表的特殊情況進行處理,當鍊表為空,新節點成環返回。不為空就迴圈鍊錶,當迴圈過程中有滿足條件的位置,就將新節點插入該位置,如果迴圈到頭節點都不滿足,則將新節點插入到頭節點之前。最後對新節點和頭節點進行比較,返回值較小的哪乙個。
當題目要求我們對鍊錶進行插入、刪除等操作的時候,我們一般都會用到當前結點的前乙個結點,所以我們一般建立乙個新節點來儲存當前節點的前乙個結點。有時候也會儲存當前節點的下乙個結點
向有序的環形單鏈表中插入新節點
向有序的環形單鏈表中插入新節點 乙個環形單鏈表從頭節點 head 開始不降序,同時由最後的節點指回頭節點。給定這樣乙個環形單鏈表的頭節點 head 和 乙個整數 num,請生成節點值為 num 的新節點,並插入到這個環形鍊錶中,保證調整後的鍊錶依然有序。輸入描述 環形單鏈表的頭節點 head 和 乙...
鍊錶 向有序環形單鏈表中插入新節點
問題描述 向有序環形單鏈表中插入乙個新節點,得到新的環形單鏈表有序,並將頭結點指向最小值 預設當前頭結點指向最小值,環形鍊錶不降序排列 演算法實現 class node public node insertnum node head,int num node pre head node cur he...
向單鏈表中插入 刪除節點
include include typedef struct linknode node,linklist linklist表示結構體指標 linklist createlist end int n 尾插法建立鍊錶 void showlist linklist l 輸出鍊錶內容 void addno...