我试图学习在链表中插入一个节点(并返回头部),但由于某种原因,它是不正确的。
这是我的方法:
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;
}
如果将节点插入头部,则需要将头部设置为要插入的节点。
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;
}
如果在curr
节点之后插入新节点,则此循环会使一个节点走得太远。
while (currPos < position) {
curr = curr.next;
currPos++;
}
您可以通过用笔和纸或调试器遍历代码轻松解决这个问题。
我在做一个程序,没有使用Java的内置链表类;我在从头开始做。除了编写一个将节点插入链表的特定位置的方法外,我在所有方面都取得了成功。 我有一个方法将一个特定的节点设置为“当前”节点。所以,例如,我有一个链表,看起来是这样的:猫-->狗-->使-->好-->宠物,“当前”等于2;这意味着“当前”节点是“狗”。 从这里开始,假设我想在“current”的位置插入一个新节点,它的info字段为AND。
比较 数字 计算 间隔 否则 与 或 开关 计数器 保持 延时 平均 今天日期 现在时间 波形 序列 随机数 映射 过滤 函数 计算+ 比较+ 阀门
我尝试实现循环链表的insert方法。我想我取得了一些成功。 问题:当我显示列表时。display方法将循环,因为链接的每个next变量都链接到一个非Null节点对象。所以head永远不会是空对象。根据我对单链表的回忆,head总是指向列表中的第一个节点或其中包含数据的第一个节点。 我对循环链表的概念理解:根据我的理解,循环链表有点像一个单链表,但有一点小的变化:尾部对象的下一个变量指向头部。 来
问题内容: 我正在做一个作业,告诉我假设我有一个带有标题和尾部节点的单链接列表。它要我在位置p之前插入项目y。有人可以查看我的代码并告诉我我是否走对了吗?如果没有,您能为我提供任何提示或指示(无双关语)吗? 我认为我可能是错的,因为即使在问题描述中特别提到了头和尾节点,我也根本不使用头和尾节点。我正在考虑编写一个while循环来遍历列表,直到找到p并以这种方式解决问题,但这不是固定时间的,对吗?
我试图理解双重链表的java实现。我有以下代码: 和以下内容: 为了清晰起见,这里只显示了insertHead()方法。 现在我明白了,如果有人在main方法中运行insertHead(10),如果列表为空;一个新的对象形成,头部和尾部引用变量都指向该对象。 我不明白的是如果列表不是空的;代码段非常混乱。 1)我所理解的是n=10,null和head被传递给构造函数:public DLLNode(
为了快速地将数据插入到数据库中,我一直在尝试生成一个巨大的SQL(大约200个查询),但由于某种原因,我得到了SQL错误,但不确定是什么导致了它。 错误: SQL错误(1064):您的SQL语法有错误;查看与您的MySQL server版本相对应的手册,以了解在第8行附近使用的正确语法 下面是我的一部分代码: 你可以在Pastebin上找到我的完整SQL。 不知道是什么原因造成的,因为后面的“6”