LinkedList节点插入

时间:2016-06-16 20:29:26

标签: c++ list

我知道这是非常基本的东西,但我对我的生活似乎无法理解我将如何做到这一点:

问:给出节点的以下结构定义:

struct Node
{
     int value;
     Node* next;
};

并且声明:

Node* head;

已构建以下链接的节点列表,其中头指针分配给节点对象3:

head ----> 3 ----> 9 ----> 34 ----> -5 ----> NULL

编写单个C ++语句,将第34个节点存储在变量result中的第3个节点中:

int result =

哪里是个好地方?这是要求我在列表中添加一个元素,还是在列表中添加一个全新的节点?太困惑了!!

3 个答案:

答案 0 :(得分:3)

head->next->next将指向链接列表中的第三个节点。 所以,

int result = head->next->next->data;

会将值存储在列表的第三个节点中。

问题是要求您阅读第三个节点并将其值存储在结果中。

答案 1 :(得分:2)

链接列表采用链式概念,其中链的整个长度的每个链式链接在每个链接的前面处连接。
人们以各种方式代表这一点。一个例子是:

struct Node {
    int value;
    Node* front;
};

或者:

struct Node {
    int value;
    Node* next;
};

当您建立链表的头部时,您正在创建链中的第一个节点:

Node* head;
head = NULL; // this is an empty linked list

每当您想要将一个节点(或“链接”)添加到链中时,您将新节点传递给“Head”,它会跟踪链:

void newNode(int value, Node* head)
{
    Node *node;
    node = new Node*; // or (Node*)malloc(sizeof(Node));
    node->value = value;
    node->next = head;
    head = node;
}

使用此概念,您可以向链中添加任意数量的链接。 Thomas和warun就是很好的例子。 希望这可以帮助。

答案 2 :(得分:1)

循环示例。

Node* temp = head;
int number = 300; //the place you are looking for
if(temp)
{
    int i;
    for(i = 0 ; i< number && temp->next != nullptr ;i++)
    {
        temp = temp->next;
    }
    if(i == 300)
    {
        //found you value;
        result = temp->value;
    }
}