1)我仍然试图围绕链接列表在c ++中的工作方式。目前我正在尝试在其他节点之间插入新节点。虽然我能够添加所需的节点,但是在我打印之后,新节点之后的任何内容似乎都会被删除:
void InsertNode(int pos, int val) {
Node *n = new Node();
n->data = val;
Node *pnt = head;
for (int i = 0; i < pos; i++) {
pnt = pnt->next;
}
pnt->next = n;
DisplayList();
}
2)然后我希望能够创建另一个操作,可以搜索列表中的元素并输出其位置(如果存在)。但是据我所知,到目前为止,我还没有看到如何将我想要找到的值与列表中的元素进行比较。
这是我想象的样子,但我知道if语句不是有效的。
void SearchElement(int val) {
Node *list = head;
int i = 0;
while (list) {
list = list->next;
i++;
if (list == val) { cout << "The value is at position: " << i << endl; }
}
//print statement saying it doesn't exist
}
答案 0 :(得分:0)
在插入新节点之前,必须将列表的其余部分附加到n:
n->next = pnt->next;
pnt->next = n;
对于第二个问题:您的价值在list-&gt;数据中。
int i = 0;
while (list) {
if (list->data == val) {
cout << "The value is at position: " << i << endl;
break;
}
list = list->next;
i++;
}