插入和查找节点 - C ++中的链接列表

时间:2016-10-26 00:36:23

标签: c++ linked-list nodes

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
}

1 个答案:

答案 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++;        
}