结构体指针相等,确实是表示都指向同一个结构体。
一般链表只需要知道头指针head即可,然后遍历头指针就可以访问链表中所用的元素。
所以head的值不能变~~,所以一般要遍历链表,需要定义一个临时指针,首先指向头部,然后逐个往下遍历
一般就是
p=head;
while(p!=null)
{
p=p->next; //这样p会一直变,所以不适合直接用head,因为head不能变
}
你的程序不完整·可能还有些没出现~ 看函数名字应该是增加节点吧,增加节点可能有比较的项目,那就需要遍历列表,这点接和顺序表有差别了
顺序表查找容易,替换难, 链表是查找难(遍历),替换容易
=不是相等,这是赋值的意思
相等是比较的意思,比较两个数相等用 == 双等号
p=h 赋值,就是把h的地址值赋值给 p ,为以后的操作准备。
h 中放的首地址,p 中放当前前一个节点,此时只有一个首地址,p中也放首地址。
后面,新生成后一个结构体节点,就会把新的放到p中。
其实p中放的一直是当前最后一个节点的地址,这样在新生成的节点后,才会把新生成的节点地址放入当前节点(即新生成的前一个节点)中的 link中。
link中放的是下一个节点的地址。
=不是相等,是赋值
p=h就是将指针变量h保存的地址内容赋给p,这样就表示指针p和h指向了同一块内存
C语言中相等比较是用的==