数据结构第九节

2.3.2.1 存储结构表示
结点是通过动态分配和释放来的实现,即需要时分配,不需要时释
放。实现时是分别使用C语言提供的标准函数:malloc() ,realloc(),
sizeof() ,free() .
动态分配 p=(LNode*)malloc(sizeof(LNode));
typedef int ElemType;
typedef struct Lnode
{
ElemType data; /*数据域,保存结点的值 */
struct Lnode *next; /*指针域*/
}LNode; /*结点的类型 */动态释放 free(p) ;
2.3.2.2 最常用的基本操作及其示意图
⑴ 结点的赋值
⑵ 常见的指针操作
LNode *p;
p=(LNode*)malloc(sizeof(LNode));
p->data=20; p->next=NULL ;2.3.2.3 建立单链表
从一个空表开始,重复读入数据,生成新结点,将读入数据存放到新
结点的数据域中,然后将新结点插入到当前链表的表头上,直到读入结束
标志为止。即每次插入的结点都作为链表的第一个结点。
⑴ 头插入法建表
头插法建表:将新结点插入到当前链表的表头
优点:算法简单 缺点: 链表中结点次序和输入次序相反
(2)尾插法建表:将新结点插入到当前链表的表尾(需引入r)不带头结点的尾插法:插入时,第一个结点的处理与其它结点的处理
有区别。结束时,空表和非空表的处理有区别。 带头结点的尾插法:1)
链表第一个位置上的操作与其它位置上的操作相一致。 2)空表和非空表
的处理相一致。

上一篇:链表的逆转


下一篇:单链表的相关操作