鱼C论坛

 找回密码
 立即注册
查看: 1917|回复: 6

链表头结点问题

[复制链接]
发表于 2014-11-13 22:30:02 | 显示全部楼层 |阅读模式
5鱼币

求助:

struct student
{
     int stunumber;
     float studscore;
     struct student *next;
};

由上述结构体创建链表,struct student* head指针指向头结点,那么head+1会指向哪呢?
又如:
int a[10];
int *p;
p=a;
p++;
这里p会指向先一个元素;

head+1好像不是这样的啊???


最佳答案

查看完整内容

如果使用的是结构体数组,head+1指向第一个结点(头结点不使用情况),如果不是数组则没有意义,指向一个未知区域,要指向第一个结点的话用head->next p初始化时指向数组a, p++后p指向a[1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-13 22:30:03 | 显示全部楼层
如果使用的是结构体数组,head+1指向第一个结点(头结点不使用情况),如果不是数组则没有意义,指向一个未知区域,要指向第一个结点的话用head->next
p初始化时指向数组a, p++后p指向a[1]
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-14 15:16:20 | 显示全部楼层
这是由于p所指向的是数组的首地址,而数组的是一段地址连续的存储单元的集合,所以p++的时候会指向下一个元素。而链表各个结点的首地址是不连续的,所以head+1不会是下一个结点。我也是刚学到链表,这些是我的理解,楼主一起学习哈!!!

评分

参与人数 1荣誉 +3 鱼币 +3 贡献 +2 收起 理由
Victory_6226 + 3 + 3 + 2 多谢鱼油,共同学习

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-14 19:46:14 | 显示全部楼层
因为你所理解的是连续的内存, 也就相当于一条尺子一样。 从1到20厘米, 而链表不能这样理解。

评分

参与人数 1荣誉 +2 鱼币 +2 贡献 +1 收起 理由
Victory_6226 + 2 + 2 + 1 有道理,很形象,谢谢啊

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-11-21 21:38:48 | 显示全部楼层
head->next
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

头像被屏蔽
发表于 2014-12-2 20:06:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-12-2 23:28:43 | 显示全部楼层
首先要明白存储结构,
链式存储结构,位置是不连续的,通过指针来来接链表,就如你定义的节点中,*next就是来定位下一个节点,你头结点的下一个应该是head->next;
顺序存储,就像数组,定义完在内存中按顺序来定义空间并存储的,+1就往下走一个节点.

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +2 收起 理由
Victory_6226 + 5 + 5 + 2 谢谢,明白了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-25 10:58

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表