C语言 单链表 结构体指针 赋值想等 说明什么?

大神:请问结构体指针相等能说明什么问题?如下程序(在注释部分)为什么指针相等就说明谁指向谁?小弟搞不懂(我觉得,结构体指针相等,不就说明这是指向同一个结构吗?),恳请大神指点
struct node
{
char name[20]; //数据域
struct node *link;//指针域
};
struct node *creat(int n)//该函数的返回值是一个指向node类型结构体的指针变量
{
struct node *p,*h,*s;//*h保存表头节点的指针
//*p指向当前节点的前一个节点
//*s指向当前节点
int i;
if((h=(struct node *)malloc(sizeof(struct node)))==NULL)
{ //分配空间并检测
printf("不能分配内存空间");
exit(0);
}
else
{
h->name[0]='\0';//把表头指针的数据域置空
h->link=NULL; //把表头节点的链域也置空
p=h; //这个说明了什么???????????????????????
for(i=0;i<n;i++)
{
if((s=((struct node *)malloc(sizeof(struct node))))==NULL)
{
printf("不能分配内存空间");
exit(0);

结构体指针相等,确实是表示都指向同一个结构体。

一般链表只需要知道头指针head即可,然后遍历头指针就可以访问链表中所用的元素。

所以head的值不能变~~,所以一般要遍历链表,需要定义一个临时指针,首先指向头部,然后逐个往下遍历

一般就是
p=head;

while(p!=null)
{
p=p->next; //这样p会一直变,所以不适合直接用head,因为head不能变
}

你的程序不完整·可能还有些没出现~ 看函数名字应该是增加节点吧,增加节点可能有比较的项目,那就需要遍历列表,这点接和顺序表有差别了

顺序表查找容易,替换难, 链表是查找难(遍历),替换容易
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-01-30
=不是相等,这是赋值的意思
相等是比较的意思,比较两个数相等用 == 双等号
p=h 赋值,就是把h的地址值赋值给 p ,为以后的操作准备。
h 中放的首地址,p 中放当前前一个节点,此时只有一个首地址,p中也放首地址。
后面,新生成后一个结构体节点,就会把新的放到p中。
其实p中放的一直是当前最后一个节点的地址,这样在新生成的节点后,才会把新生成的节点地址放入当前节点(即新生成的前一个节点)中的 link中。
link中放的是下一个节点的地址。本回答被提问者采纳
第2个回答  2015-01-30
=不是相等,是赋值
p=h就是将指针变量h保存的地址内容赋给p,这样就表示指针p和h指向了同一块内存

C语言中相等比较是用的==本回答被网友采纳
相似回答