链表头结点问题
求助:
struct student
{
int stunumber;
float studscore;
struct student *next;
};
由上述结构体创建链表,struct student* head指针指向头结点,那么head+1会指向哪呢?
又如:
int a;
int *p;
p=a;
p++;
这里p会指向先一个元素;
head+1好像不是这样的啊???
如果使用的是结构体数组,head+1指向第一个结点(头结点不使用情况),如果不是数组则没有意义,指向一个未知区域,要指向第一个结点的话用head->next
p初始化时指向数组a, p++后p指向a 这是由于p所指向的是数组的首地址,而数组的是一段地址连续的存储单元的集合,所以p++的时候会指向下一个元素。而链表各个结点的首地址是不连续的,所以head+1不会是下一个结点。我也是刚学到链表,这些是我的理解,楼主一起学习哈!!! 因为你所理解的是连续的内存, 也就相当于一条尺子一样。 从1到20厘米, 而链表不能这样理解。 head->next 首先要明白存储结构,
链式存储结构,位置是不连续的,通过指针来来接链表,就如你定义的节点中,*next就是来定位下一个节点,你头结点的下一个应该是head->next;
顺序存储,就像数组,定义完在内存中按顺序来定义空间并存储的,+1就往下走一个节点.
页:
[1]