下面说线性结构,线性结构是数据结构中最基础最简单的一种结构类型 其中典型的是线性表
线性表:举一个列子
下面有一个一元多项式F(x)=a0+a1*x+a2*x+~~~~~~~+an*x;
请你思考并给出,你所能想到的几种储存方式.
1: 用一个数组将其系数储存起来,然后用for循环这样一个一个相加.
------弊端是 1:时间复杂度比较高,机器做了许多的无用功,例如当一元多项式为2*x+3*x^2000.这样就做了许许多多的无用功----------------------下面给出对于这种情况的优化算法---------------
2: 用一个结构体数组只将系数和次方都不为零的储存起来计算这样就节省了好多时间和空间--形如
typedef struct Polynode *Polynomial; typedef struct polynode { int coed;//系数 int expon;//指数 polynomial ilnk;//指针域 }
----------------------同一个问题有不同的储存方法-----储存方法和算法是密切相关的-----------------------------
在数据结构中最简单的储存方法就是两种1:数组 2:链表 .
=======================我是大分隔符================================
什么是线性表?
线性表:由同类型 数据元素 构成的 有序序列的线性结构 .
操作集: 线性表L (属于)List ,整数i 表示位置,元素X (属于) ElementType ,
线性表基本操作主要有:
1 、List MakeEmpty() : 初始化一个空线性表L ;
2 、ElementType FindKth( int K, List L ) :根据位序K ,返回相应元素 ;
3 、int Find( ElementType X, List L ) :在线性表L 中查找X 的第一次出现位置;
4 、void Insert( ElementType X, int i, List L) :在位序i 前插入一个新元素X ;
5 、void Delete( int i, List L ) :删除指定位序i 的元素;
6 、int Length( List L ) :返回线性表L 的长度n 。
====线性表的顺序储存实现(数组)就不再说了没必要====下面给出线性表的链式储存实现(链表)======
分别为 储存,插入,删除.
==========链表和数组的不同==链表只要求 在逻辑上相邻,在物理不要求相邻===