【问题标题】:Nodes, Type Definitions, how Null works (C programming language) C linked lists节点、类型定义、Null 的工作原理(C 编程语言)C 链表
【发布时间】:2013-05-08 00:33:12
【问题描述】:

我很难理解 C 中链表中的节点的某些内容。我在纸上得到了 6 个节点的列表,我试图画出在几组不同的命令后节点是如何变化的。列表开始如下(如果一个节点被命名,名称就列在它之前):

head[2, link]-->[4, link]-->P[6, link]-->[7,link]-->Q[8, link]-->R[9,链接为空]

第一组命令:

R->link = Q;
head->item = 11;
P = P->link;

head[11, link]-->[4, link]-->[6, link]-->P[7,link]-->Q[8, link]-->R[9,链接]-->问

这是我的第一个问题:当您将 R->link 分配给 Q 时,它是否只是围绕自身指向 Q 节点?

第二组命令:

P->item = head->item;
Q = NULL;
P = (P->link)->link;
head = R;

[11, link]-->[4, link]-->[6, link]-->[11,link]-->Q[NULL?]-->PR Head[9, link] -->Q 为空?

第二个问题:Q节点中的null值究竟是什么?它的链接会消失吗? P = (P->link)->link 设置为null后如何沿其链接移动?现在 Q 为空,R 也指向什么?

我创建节点的代码如下:

#include <stdio.h>
#include <stdlib.h>

typedef int item_t;
typedef struct node node_t;
typedef node_t* pointer_t;


struct node{
       item_t item;
       pointer_t link;
       };

int main(void){

    pointer_t head, P, Q, R;

    head = malloc(sizeof(node_t));
    head->item = 2;

【问题讨论】:

    标签: c null linked-list


    【解决方案1】:

    答案 1:是的,该操作会在列表中创建一个循环,以后会让人头疼。实际上,在第一组命令之后,您的列表变为:

    head[11,link]-->[4,link]-->[6,link]-->P[7,link]-->Q[8,link]-->R[9,link]--+
                                                        ^-----------<--------+ 
    

    答案 2:设置 Q = NULL 不会改变列表。您只是在修改一个不相关的指针,而不是列表中的任何链接。您的列表现在是:

    [11,link]-->[4,link]-->[6,link]-->[11,link]-->[8,link]-->P,R,head[9,link]--+
                                                   ^----------------<----------+ 
    

    记住,P, Q, R, head 都是指向链表中元素的指针,改变它们只会改变它们指向的东西,它们不会改变链表的结构。

    【讨论】:

      猜你喜欢
      • 2021-07-06
      • 1970-01-01
      • 2014-02-12
      • 2014-02-11
      • 1970-01-01
      • 2012-05-01
      • 1970-01-01
      • 2022-06-14
      • 2016-08-25
      相关资源
      最近更新 更多