LinkedList节点插入

LinkedList Node Insertion

本文关键字:插入 节点 LinkedList      更新时间:2023-10-16

我知道这是非常基本的东西,但是我一生似乎不明白我将如何做到这一点:

Q:给定以下结构定义:

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

并给定声明:

Node* head;

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

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

编写一个单个C 语句,该语句将将值34存储在第三节点中的变量结果:

int result =

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

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

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

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

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

链接列表采用链概念,其中沿着的每个链链链路沿链条的整个链路>链条的长度连接在 front 的每个链接。
人们以各种方式代表这一点。一个例子是:

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)有很好的例子。希望这可以帮助。

循环的示例。

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;
    }
}