[英]Confusion regarding nodes in a Linked List
我對鏈接列表有疑問。 我跟一個朋友說話,現在很困惑。 假設有兩個類型為struct node的變量。 一個是ptr,另一個是標頭節點。
struct node
{
int data;
struct node *link;
};
struct node *ptr,*header;
之間有什么區別
ptr=header
和
ptr->link=header
和
ptr->link=header->link
? 編輯:我的意思是語義。
假設標頭最初指向分配的節點,它將看起來像
+----------------+-----------+
| | |
header +-----------> | data | link+-----------> other node/NULL
| | |
+----------------+-----------+
在ptr=header
, ptr
和header
指向同一節點
+----------------+-----------+
pointer +-----------> | | |
header +-----------> | data | link+-----------> other node/NULL
| | |
+----------------+-----------+
在ptr->link=header
,
+----------------+-----------+
pointer +-----------> | | |
header +-----------> | data | link+----------+
+---> | | | |
| +----------------+-----------+ |
+-----------------------------------------+
在ptr->link=header->link
,將取決於header
和ptr
指向的位置
如果它們指向某些不同的節點,則由ptr
和header
指向的兩個節點的link
指針將指向同一節點(或NULL
)。
+----------------+-----------+ | | | header +-----------> | data | link+--------------+ | | | | | +----------------+-----------+ +------> | |other node/NULL +------> | +----------------+-----------+ | | | | | ptr +-----------> | data | link+--------------+ | | | +----------------+-----------+
假設您僅執行以下情況之一:
ptr=header
將指向header
節點。 這意味着ptr
的數據將與header
的數據相同。 ptr->link
也將與header->link
相同 ptr->link=header
header
在列表中將ptr
移到ptr->link=header
ptr->link = header->link
使ptr
與header
平行,例如:
ptr->data != header->data; // TRUE a = ptr->link; b = header->link; a->data == b->data // TRUE
其中a
和b
為struct node*
類型
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.