我正在努力理解 C 中链表中的节点的某些内容。我在纸上得到了一个包含 6 个节点的列表,我试图画出在几组不同的命令之后节点是如何变化的。该列表开始如下(如果一个节点被命名,该名称就列在它之前):
head[2, 链接]-->[4, 链接]-->P[6, 链接]-->[7,链接]-->Q[8, 链接]-->R[9, 链接为空]
第一组命令:
R->link = Q;
head->item = 11;
P = P->link;
head[11, 链接]-->[4, 链接]-->[6, 链接]-->P[7,链接]-->Q[8, 链接]-->R[9, 链接]- ->问
这是我的第一个问题:当您将 R->link 分配给 Q 时,它是否只是围绕自身指向 Q 节点?
第二组命令:
P->item = head->item;
Q = NULL;
P = (P->link)->link;
head = R;
[11,链接]-->[4,链接]-->[6,链接]-->[11,链接]-->Q[NULL?]-->公关头[9,链接]-->问空?
第二个问题: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;