2016-06-16 145 views
1

我知道这是严重的基本的东西,但我的生活,我似乎对不能明白我怎么会去这样做:LinkedList的节点插入

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

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

而鉴于声明:

Node* head; 

节点以下链接列表已建成,用头POI NTER分配给节点对象3:

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

收件将在第三节点的值34存储在变量结果的单C++的声明:

int result =

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

+1

它要求你读取第三个节点并将值存储在'result'中。 –

+0

一个好的开始将从头开始,并遵循下一个指针,直到你处于正确的位置。那么你应该把价值转化为可变结果 – Thomas

回答

3

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

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

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

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

+0

请原谅我先生,但请记住你的分号。毕竟我们在做C++。对不起,无法抗拒:-) –

+0

所以它不要求我插入任何东西。好的,我就是这么读的,但是我很困惑,因为它好像已经有34了。如果名单很大,我想要一个300左右的值。有没有更好的方式比头 - >下一个 - >下一 - >下一 - >下一 - >下一 - >下一个 - >下一个 - >下一步等... – Podo

+1

然后你应该使用循环;) – Thomas

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

链表使用链概念,其中沿整个长度所述链的每个链节在每个链路的连接。
人们用各种方式表示这一点。一个例子是:

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

或者:

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

当你建立一个链表的头,你正在创造链中的第一个节点:

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

无论何时您想要添加一个节点(或“链接”)到链中,您都会将新节点传递到“头”,以便跟踪链:

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

使用此概念,您可以添加任意数量的链接到您的链中。托马斯和瓦伦有这方面的很好的例子。 希望这有助于。

+0

由于这是单链表,我很困惑,它应该连接在前端和后端。你什么意思? –

+0

对不起一月,我正想着在我头脑中排队一分钟。编辑这:) –