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

sin*_*uri 0 c linked-list nodes

我对链接列表有疑问.我和一位朋友谈过,现在很困惑.假设有两个类型为struct node的变量.一个是ptr,另一个是标题节点.

struct node
{
  int data;
  struct node *link;
};
struct node *ptr,*header;
Run Code Online (Sandbox Code Playgroud)

有什么区别

ptr=header
Run Code Online (Sandbox Code Playgroud)

ptr->link=header
Run Code Online (Sandbox Code Playgroud)

ptr->link=header->link
Run Code Online (Sandbox Code Playgroud)

?编辑:我的意思是语义.

hac*_*cks 5

假设标头最初指向一个已分配的节点,它看起来就像

                       +----------------+-----------+
                       |                |           |
header  +----------->  |   data         |  link+-----------> other node/NULL
                       |                |           |
                       +----------------+-----------+
Run Code Online (Sandbox Code Playgroud)

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

                       +----------------+-----------+
pointer +----------->  |                |           |
header  +----------->  |   data         |  link+-----------> other node/NULL
                       |                |           |
                       +----------------+-----------+
Run Code Online (Sandbox Code Playgroud)

之后ptr->link=header,

                       +----------------+-----------+
pointer +----------->  |                |           |
header  +----------->  |   data         |  link+----------+ 
                +--->  |                |           |     |
                |      +----------------+-----------+     |
                +-----------------------------------------+  
Run Code Online (Sandbox Code Playgroud)

之后ptr->link=header->link,它将取决于在哪里headerptr指向

  • 如果它们指向同一个节点,则该语句将不起作用.
  • 如果它们指向一些不同的节点然后link指针通过指向两个节点的ptrheader将指向同一节点(或NULL).

                           +----------------+-----------+
                           |                |           |
    header  +----------->  |   data         |  link+--------------+                                                       |
                           |                |           |         |
                           +----------------+-----------+         +------> |
                                                                           |other node/NULL 
                                                                  +------> |
                           +----------------+-----------+         |
                           |                |           |         |
    ptr     +----------->  |   data         |  link+--------------+ 
                           |                |           |
                           +----------------+-----------+
    
    Run Code Online (Sandbox Code Playgroud)