我正在尝试学习在链接列表中插入一个节点(并返回头部),但由于某种原因它不正确。
这是我的方法:
1。使用所需数据创建新节点
2. 如果我们想在开头插入它,请将此新节点指向头部并返回新节点
3. 否则,循环到我们要插入节点的位置
- 一旦我们到达那里,请将节点指向当前节点的下一个
旁边插入- 将当前节点指向要插入的节点
- 返回头
为什么这不起作用?非常感谢!
Node InsertNth(Node head, int data, int position) {
Node node = new Node();
node.data = data;
if (position == 0) {
node.next = head;
return node;
}
else {
Node curr = head;
int currPos = 0;
while (currPos < position) {
curr = curr.next;
currPos++;
}
node.next = curr.next;
curr.next = node;
}
return head;
}
答案 0 :(得分:0)
假设您在curr
节点之后插入新节点,此循环将步骤过一步。
while (currPos < position) {
curr = curr.next;
currPos++;
}
您可以通过使用笔和纸或调试器逐步完成代码来轻松解决此问题。
答案 1 :(得分:-1)
如果将节点插入Head,则需要将Head设置为要插入的节点。
Node InsertNth(Node head, int data, int position) {
Node node = new Node();
node.data = data;
if (position == 0) {
node.next = head;
head = node;
}
else {
Node curr = head;
int currPos = 0;
while (currPos < position) {
curr = curr.next;
currPos++;
}
node.next = curr.next;
curr.next = node;
}
return head;
}