关于链接列表中节点的混淆

标签 c linked-list nodes

我有一个关于链表的问题。我和一个 friend 谈过,现在很困惑。 假设有两个 struct node 类型的变量。一个是ptr,一个是头节点。

struct node
{
  int data;
  struct node *link;
};
struct node *ptr,*header;

有什么区别

ptr=header

ptr->link=header

ptr->link=header->link

? 编辑:我的意思是语义上的。

最佳答案

假设 header 最初指向一个分配的节点,它看起来像

                       +----------------+-----------+
                       |                |           |
header  +----------->  |   data         |  link+-----------> other node/NULL
                       |                |           |
                       +----------------+-----------+

ptr=header之后,ptrheader都指向同一个节点

                       +----------------+-----------+
pointer +----------->  |                |           |
header  +----------->  |   data         |  link+-----------> other node/NULL
                       |                |           |
                       +----------------+-----------+

ptr->link=header之后,

                       +----------------+-----------+
pointer +----------->  |                |           |
header  +----------->  |   data         |  link+----------+ 
                +--->  |                |           |     |
                |      +----------------+-----------+     |
                +-----------------------------------------+  

ptr->link=header->link 之后,这取决于 headerptr 指向的位置

  • 如果它们指向同一个节点,则此语句将无效。
  • 如果它们指向一些不同的节点,则 ptrheader 指向的两个节点的 link 指针将指向相同的节点节点(或 NULL)。

                           +----------------+-----------+
                           |                |           |
    header  +----------->  |   data         |  link+--------------+                                                       |
                           |                |           |         |
                           +----------------+-----------+         +------> |
                                                                           |other node/NULL 
                                                                  +------> |
                           +----------------+-----------+         |
                           |                |           |         |
    ptr     +----------->  |   data         |  link+--------------+ 
                           |                |           |
                           +----------------+-----------+
    

关于关于链接列表中节点的混淆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39702983/

相关文章:

logic - 证明具有n个叶子的二叉树的高度至少为log n

c - 跨平台定位crti

c - 解决 KNKING 练习 14,第 8 章。颠倒单词

c - 将列表展平为单个列表的函数

在C中创建链接列表

java - 在java上绘制图形

c - 省略符号会自动默认为 C 中的带符号变量吗?

c++ - 错误 C3861 : 'initNode' : identifier not found

java - 反向链表问题

java - 如何在 jackrabbit 中正确添加版本控制节点