c语言数据结构链表问题!肯求大神解答!

今天看的链表,以前学的现在都忘记了。我想问下大神们,链表的头指针Head有什么用?可以不用吗?另外那个遍历链表的程序,大神帮我看看对不对。对了,那个头指针里面是只是保存第... 今天看的链表,以前学的现在都忘记了。我想问下大神们,链表的头指针Head有什么用?可以不用吗?另外那个遍历链表的程序,大神帮我看看对不对。对了,那个头指针里面是只是保存第一个结点a1的地址吗?

我这个是有头指针的链表。

int *p;
p=Head;//(可是书上写p=Head->Next;,到底哪个对啊?为啥第一个头指针还有个Next,它不是就是第一个节点的地址吗?)
while(p!=NULL)
{
printf("%d",p->Date);
p=p->Next;
}
展开
 我来答
kaixingui2012
2012-10-22 · TA获得超过4.2万个赞
知道大有可为答主
回答量:1.4万
采纳率:81%
帮助的人:6247万
展开全部
链表有种:带头结点的和不带头结点的。
带头结点的写程序比较简单、明了,它用一个结点作为头结点,不算链表数据,主要用来指出第一个数据结点的位置,建立、遍历和删除链表时,主函数操作比较方便,不用考虑头结点的变化(在子函数中完成第一个数据结点的位置变化,而主函数不用考虑)。而在不带头结点的链表中,主函数总要考虑第一个数据结点的变化,必须通过参数或返回值带回这个值的变化,初学者总会在这上面犯错。
以上你的程序大体正确,有一个错误,就是p的变量类型不对,应该是struct node *p;p应该是个结点指针。可见你的程序是不带头结点的链表,因为你将第一个结点的数据所算作链表数据了。对于带头结点的链表的遍历,第一个数据结点是p=head->next ;
更多追问追答
追问
谢谢,我以为那是带头结点的程序呢,我再问下,头结点不算链表数据?那它里面是什么类型的?也和链表的结点一样吗?一个存数据,一个放地址吗?那如果带头结点,第一个数据结点是p=head->next ;这个是链表的第一个数据的地址码?
追答
头结点不算链表数据?在带头结点的链表中,头结点当然不算链表的数据,如果它是链表的数据,那就不是带头结点的链表了。想想,这个结点在建立后,就一直不会有变动(修改、删除),链表数据会这样吗?当然,你也可以废物利用,让它存点什么,呵呵。
那它里面是什么类型的?也和链表的结点一样吗? 这当然也是struct node 类型啊,和其它结点是一样的,不然怎么当头。
一个存数据,一个放地址吗?应该是一个不存数据,其它用来存放数据,head->next中存着第一个数据的地址。
如果带头结点,第一个数据结点是p=head->next ;这个是链表的第一个数据的地址码? 回答正确!
15607513382
2012-10-22
知道答主
回答量:2
采纳率:0%
帮助的人:3164
展开全部
头指针head中是有个next 这个next包含的是下一个链表的地址
刚开始 是应该是p=head的
当这一步运行完了时,才会用p=head->next 指向下一个链表,继续运行
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
backBp
2012-10-22 · 超过18用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:51.8万
展开全部
要这个Head主要是编程的习惯,起到标识的作用吧,比如有时候你在写的时候忽然需要重新在遍历一次,没有head就不好弄了吧
程序应该没问题额,呵呵
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jinan88888888
2012-10-22 · 超过16用户采纳过TA的回答
知道答主
回答量:110
采纳率:0%
帮助的人:29.2万
展开全部
这俩是一回事。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式