有时,为编制实现对单链表某些算法的程序较为方便,在 单链表的首元结点前再增加一个头结点,如下图: 卧…@…-回內 头结点的数据域可为空,也可存储某些信息,如单链表的 结点个数,头结点的指针域指向单链表的首元结点,头指 针指向单链表的头结点 通过以上讨论可知,这种存储结构是通过指针来表示 元素间的逻辑关系,不再有逻辑顺序与物理顺序一致的特 点,是非顺序存储结构.整个单链表由头指针唯一确定 在单链表存取第i个数据元素必须从头指针出发寻找, 可见单链表是非随机存取的数据结构 232线性链表的插入和删除 在单链表存储结构中,元素的插入和删除,只需修改 有关的指针内容,不需移动元素.在插入和删除操作前, 在主函数main中需对结点类型作出说明,如
有时, 为编制实现对单链表某些算法的程序较为方便, 在 单链表的首元结点前再增加一个头结点, 如下图: h a1 a2 ai−1 ai ai+1 a n 头结点的数据域可为空, 也可存储某些信息, 如单链表的 结点个数, 头结点的指针域指向单链表的首元结点, 头指 针指向单链表的头结点. 通过以上讨论可知, 这种存储结构是通过指针来表示 元素间的逻辑关系, 不再有逻辑顺序与物理顺序一致的特 点, 是非顺序存储结构. 整个单链表由头指针唯一确定. 在单链表存取第i个数据元素必须从头指针出发寻找, 可见单链表是非随机存取的数据结构. 2.3.2 线性链表的插入和删除 在单链表存储结构中, 元素的插入和删除, 只需修改 有关的指针内容, 不需移动元素. 在插入和删除操作前, 在主函数main中需对结点类型作出说明, 如
struct node i char data; struct node *next; typedef struct node NODe 插入 先介绍在两个结点间插入一个结点的具体操作,设在单链 表中有如下两个结点, Hs=(nODe *)malloc(sizeof(NODE)) 产生一个新结点,并给新结点的数据 域赋值,而指针域为空,如左图 具体操作如下:s->next=p→>next; p->next=s; 下面给出在带头结点的单链表中插入一个新结点的C函数, 函数的功能为:在指定结点数据值的结点后插入一个给定
struct node { char data; struct node *next; }; typedef struct node NODE; 一﹑插入 先介绍在两个结点间插入一个结点的具体操作, 设在单链 表中有如下两个结点, ai−1 ai p 由s=(NODE *)malloc(sizeof(NODE)) 产生一个新结点, 并给新结点的数据 s x 域赋值, 而指针域为空, 如左图. 具体操作如下: s->next=p ->next; p ->next=s; 下面给出在带头结点的单链表中插入一个新结点的C函数, 函数的功能为: 在指定结点数据值的结点后插入一个给定