c语言链表: 链表里p->next是怎么指向下一个结点的呢,它是怎么得到下一个结点的地址。。。求详细

如题所述

struct node n1,n2;//定义两个节点
n1.next=&n2;//n1和n2连接起来
n2.next=NULL;//n2的下个节点为空
struct node n3;//增加一个节点
n2.next=&n3;//n2和n3连接起来
n3.next=NULL;//n3的下个节点为空
这样你明白了吗
p->next其实就是(*p).next
------------------------------------
用指针表达
struct node *n1=( struct node *)malloc(sizeof( struct node));//新增一个节点
struct node *n2=( struct node *)malloc(sizeof( struct node));//再新增一个节点
n1->next=n2;//连接两个节点
n2->next=NULL;//n2的下个节点为空
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-29
next就是下个结点的指针,他存的就是下一个结点的地址,只要读出next值就行了,获得某个节点的指针只要读取上一个结点的next就行,他就是该节点的指针。。。。。
第2个回答  2012-12-29
其实这是递归调用,它在结构体里面定义了一个指针,但这个指针又指向由这个结构体定义的下一个变量。通过指针就可以找到地址啊
第3个回答  2012-12-29
因为在增加链表,或者插入的时候,next的指向被更改为下一个数据的地址。所以next储存的就是下一个节点的地址了。
第4个回答  2012-12-30
是组建链表时候得到的,你是逆着来想这问题了吧 ~~
以下是例子

struct s
{ int num;
double score;
struct s *next;
}a,b,c;

struct s *head;
a.num=10000;a.score=99;
b.num=10010;b.score=0;
c.num=10086;c.score=59;
head=&a; a.next=&b;b.next=&c;c.next=NULL;本回答被提问者采纳
相似回答