线性表的链式存储结构
链式存储定义:为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息。
链式存储逻辑结构:n个结点链接成一个链式线性表的结构叫做链表,当每个结点中只包含一个指针域时,叫做单链表。
链表的基本概念
表头结点:链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息。
数据结点:链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息。
尾结点:链表中的最后一个数据结点,其下一元素指针为空,表示无后继。
单链表示例
在C语言中可以用结构体来定义链表中的指针域。
链表中的表头结点也可以用结构体实现。
获取第pos个元素操作
1.判断线性表是否合法;
2.判断位置是否合法;
3.由表头开始通过next指针移动pos次后,当前元素的next指针即指向要获取的元素。
插入元素到位置pos的算法
1.判断线性表是否合法;
2.判断插入位置是否合法;
3.由表头开始通过next指针移动pos次后,当前元素的next指针即指向要插入的位置;
4.将新元素插入;
5.线性表长度加1;
删除第pos个元素的算法
1.判断线性表是否合法;
2.判断插入位置是否合法;
3.获取第pos个元素;
4.将第pos个元素从链表中删除;
5.线性表长度减1。
链式存储结构优点:
1.无需一次性定制链表的容量;
2.插入和删除操作无需移动数据元素。
链式存储结构缺点:
1.数据元素必须保存后继元素的位置信息;
2.获取指定数据的元素操作需要顺序访问之前的元素;
3.单链表的实现严重依赖指针;
4.数据元素中必须包含一个额外的指针域;
5.没有指针的程序设计语言无法实现。
详细代码下载地址:http://download.csdn.net/download/u014754841/10235754