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)
?编辑:我的意思是语义.
假设标头最初指向一个已分配的节点,它看起来就像
+----------------+-----------+
| | |
header +-----------> | data | link+-----------> other node/NULL
| | |
+----------------+-----------+
Run Code Online (Sandbox Code Playgroud)
之后ptr=header,双方ptr并header指向同一个节点
+----------------+-----------+
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,它将取决于在哪里header和ptr指向
如果它们指向一些不同的节点然后link指针通过指向两个节点的ptr和header将指向同一节点(或NULL).
+----------------+-----------+
| | |
header +-----------> | data | link+--------------+ |
| | | |
+----------------+-----------+ +------> |
|other node/NULL
+------> |
+----------------+-----------+ |
| | | |
ptr +-----------> | data | link+--------------+
| | |
+----------------+-----------+
Run Code Online (Sandbox Code Playgroud)