c语言循环双链表每个节点的地址指的是什么?
c语言循环双链表每个节点的地址指的是什么?按照首地址来说的话,应该就是prior域的地址了?我这么理解对不?...
c语言循环双链表每个节点的地址指的是什么?按照首地址来说的话,应该就是prior域的地址了?我这么理解对不?
展开
2个回答
展开全部
p←1→n
4 2
3
这么说,希望你能理解,现在有4个节点的循环双链表1、2、3、4
每个节点的地址就相当于这四个节点所在的位置。
每个位置存储3个信息,data和两个指针。
比如节点1,它有data,p指针和n指针,p指针就指向4所在的位置,n就指向2所在的位置,同样节点2也有一个data和两个指针,它的p指向节点1所在的位置,n指针指向节点3所在位置……
这里把节点的地址比作节点所在的位置,实质上地址就是这个节点存储的3个信息在计算机内存上的位置。
更多追问追答
追问
我还是不懂,比如说至少这个单独的节点应该是一个连续存储空间是吧,只要是连续存储空间。那就可以用首项地址作为该节点的地址啊。那为啥该节点地址改不是这prior域的地址呢
追答
在单独的节点里面是连续存储空间。 如果这个节点是A 结构体,那么一个A*指针指向它,存储的是它的首地址。 但这首地址不一定是prior的地址,比如A里有a,b,c三个值,可能a在前面,也可以b,或者c,具体哪个在前面,应该是定义在最前面的那个。 如果prior定义在最前面,首地址相同。但prior指针和A指针不能相等,数据类型不同嘛
展开全部
#include <stdio.h>
struct TNode
{
TNode pre;
TNode next;
int seq;
};
int main()
{
TNode pNode[5], temp;
int n = 5, i = 0;
//链表初始化
for (i; i < n; i++)
{
pNode[i].next = pNode[i+1];
if ( i != 0)
{
pNode[i].pre = pNode[i-1];
}
pNode[i].seq = i;
}
// 链表节点交换,交换3和4
temp = pNode[3];
交换,再将3的前和后,4的前和后重新赋值
return 0;
}
struct TNode
{
TNode pre;
TNode next;
int seq;
};
int main()
{
TNode pNode[5], temp;
int n = 5, i = 0;
//链表初始化
for (i; i < n; i++)
{
pNode[i].next = pNode[i+1];
if ( i != 0)
{
pNode[i].pre = pNode[i-1];
}
pNode[i].seq = i;
}
// 链表节点交换,交换3和4
temp = pNode[3];
交换,再将3的前和后,4的前和后重新赋值
return 0;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询