void test6(void)
{
struct node
{
int x;
struct node *p;
};
struct node link1,link2,link3;
link1.x=1;
link2.x=4;
link3.x=3;
link1.p=&link2;
link2.p=&link3;
link3.p=&link1;
printf("link1.p= %p\n",link1.p);
printf("&link2= %p\n",&link2);
printf("*link1.p= %d\n",link1.p->x);
}
结合上一个例子,我解释一下这个。
struct node
{
int x;
struct node *p;
};
定义结构体node,表示链表的一个节点,该节点应能存储节点的数据+下一个节点的地址。
因此该节点的结构体变量包含两项数据,其中第二个存储地址的数据位指针,且能指向自身结构类型地址的指针,
然后就是创建节点,跟使用结构体变量类型方法是一样的,创建3个节点,
然后通过取地址将3个节点地址取出,放到编号挨着的三个变量的地址存储位置。
这样我们就将三个节点链接组合成了一个三角形的环状。。
我们就可以通过节点1里面存储的地址,去找到节点2里面的数据,然后再通过节点2的地址找到节点3里的数据。
|