会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
题目要你在双向循环链表的最前面插入一个值为 x 的新节点,再从新头沿后继走一圈输出。本题允许原链表为空(n=0)。
- 先按输入序列把原链表建出来:相邻节点互相用 next、prev 连上,最后把头尾接成环。单节点时自己指向自己。n=0 时原链表是空指针,不要去读第二行。
- 头插时分两种情况。空表:新节点的 prev 和 next 都指向自己,它就是唯一节点。非空:新节点夹在「原来的尾」和「原来的头」之间。设原头为 head,原尾就是 head.prev,则:
- 新节点的 next 指向原头,prev 指向原尾;
- 原尾的 next、原头的 prev 都改成新节点。
- 新节点成为新的头。从它出发沿 next 走 n+1 步,正好一圈,不会死循环。