向有序的環形單鏈表中插入新節點
阿新 • • 發佈:2021-11-24
向有序的環形單鏈表中插入新節點
《程式設計師程式碼面試指南》第28題 P87 難度:士★☆☆☆
最近事情有點多,今天暫時挑個簡單的題做一下。。
這個題思路很簡單,不過我忘記考慮連結串列為空的情況了。具體過程如下:
- 生成值為num的新節點node
- 如果連結串列為空,讓node自己組成環形單鏈表,直接返回
- 連結串列不為空,則pre=head,cur=head.next,然後同步移動下去。當num≥pre.value並且num≤cur.value時,將node插入pre和cur之間
- 遍歷完成後(pre移動到尾結點,cur移動到頭結點),如果都沒有找到滿足3中條件的節點
程式碼如下:
public Node insertNum(Node head, int num) { Node node = new Node(num); if (head == null) { node.next = node; return node; } Node pre = head; Node cur = head.next; while (cur != head) { if (pre.value <= num && cur.value >= num) { break; } pre = cur; cur = cur.next; } pre.next = node; node.next = cur; return head.value < num ? head : node; }
(左神的程式碼比我的優美多了,確實得好好學習一下了┭┮﹏┭┮)