-> 左边是结构体指针,右边是结构体成员,因此p->next 的含义是p指针指向结构体变量的next数据域。
例:
typedef struct{
int data;
struct Lnode *next;
}Lnode,*LinkList;
Lnode a; 结构体变量,用a.data、a.next
LinkList s;结构体指针,用s->data、s->next
扩展资料
p->next定义
struct Data
{
int a,b,c;
}; /*定义结构体*/
struct Data * p;/*定义结构体指针*/
struct Data A = {1,2,3};/*声明变量A*/
int x;/*声明一个变量x*/
p = &A ; /*让p指向A*/
x = p->a;/*这句话的意思就是取出p所指向的结构体中包含的数据项a赋值给x*/
/*由于此时p指向A,因而 p->a == A.a,也就是1*/
对于一开始的问题 p = p->next;这应该出现在C语言的链表,这里的next应该是一个与p同类型的结构体指针,其定义格式应该是:
struct Data
{
int a;
struct Data * next;
};/*定义结构体*/
main()
{
struct Data * p;/*声明指针变量p*/
p = p->next;/*将next中的值赋给p*/
}
链表中的指向下一个节点。->是表示指向结构体中的成员。
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
使用链表结构可以克服数组链表需要预先知道数据大小的缺点,链表结构可以充分利用计算机内存空间,实现灵活的内存动态管理。但是链表失去了数组随机读取的优点,同时链表由于增加了结点的指针域,空间开销比较大。
扩展资料:
数据结构分类
根据数据元素间关系的不同特性,通常有下列四类基本的结构
1、集合结构。该结构的数据元素间的关系是“属于同一个集合”。
2、线性结构。该结构的数据元素之间存在着一对一的关系。
3、树型结构。该结构的数据元素之间存在着一对多的关系。
4、图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。 从上面所介绍的数据结构的概念中可以知道,一个数据结构有两个要素。一个是数据元素的集合,另一个是关系的集合。在形式上,数据结构通常可以采用一个二元组来表示。
参考资料:百度百科-链表
参考资料:百度百科-数据结构
typedefstruct LNode {
DataType data;
structLNode *next;
}LNode, *LinkList;
基本形态
带头结点的单链表的基本形态有:
单链表空
条件: L->next == 0
单链表不空
条件:L->next!= 0
基本算法 (遍历)
顺序访问所有元素
借助指针,“顺藤摸瓜”(沿着链表访问结点)。
p = L->next; // 注意起始位置的考虑
while ( p!=NULL ) { //判表尾,另外 (p!=0)或(p)均可
visit( p->data ); //访问:可以换成各种操作
p = p->next; //指针沿着链表向后移动
}
p->next :如图 如果P现在a1,p->next 就是a2,
拙见!!
链表中的指向下一个节点。->是表示指向结构体中的成员
指向对象成员