我知道这是非常基本的东西,但我对我的生活似乎无法理解我将如何做到这一点:
问:给出节点的以下结构定义:
struct Node
{
int value;
Node* next;
};
并且声明:
Node* head;
已构建以下链接的节点列表,其中头指针分配给节点对象3:
head ----> 3 ----> 9 ----> 34 ----> -5 ----> NULL
编写单个C ++语句,将第34个节点存储在变量result中的第3个节点中:
int result =
哪里是个好地方?这是要求我在列表中添加一个元素,还是在列表中添加一个全新的节点?太困惑了!!
答案 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;
}
}