一、引言
线性结构是数据结构里面最基础最简单的一种数据结构类型,最典型的一种叫做线性表。
举个例子:
如何用程序设计语言来表示这样的一个一元多项式及其相应的操作运算呢?
- 顺序存储结构直接表示
用一个数组存储第i项的系数ai,而指数对应这个分量的下标
这样带来的问题是什么呢?假如我要表示x的两千次方,数组的大小就需要2001项,而其中很多都是含有0的项,这样就造成了存储空间的浪费。
而且在做加法的时候,需要把数组做一个循环,需要从0开始加到2000,实际上很多计算都是在加一些无效的0 - 顺序存储结构表示非零项
将多项式看成是一个(ai, i)二元组的集合,这样,每一个分量就不单单只包含系数了,还包含了指数
这里要注意的是:
要按指数的大小进行排列,在做加法的时候就能够达到比较快的运算速度 - 用链表结构来存储非零项
链表中的每个结点存储多项式中的一个非零项,包括系数和指数两个数据域和一个指针域
在做加法运算的时候,就和2中两个数组的运算是一样的:
分别指向多项式的头,然后比较指数大小,大的输出,相等的系数相加
总结
- 用数组实现有两种方法:一个是直接表示,另一个是只表示非零项 还有就是可以用链表实现
- 同一个问题可以有不同的表示(存储)方法
二、线性表的概念
- 线性表:
- 表中元素的个数称为线性表的长度
- 线性表没有元素时,称为空表
- 表的起始位置称为表头,表的结束位置称为表尾