网易云课堂-数据结构-第二讲-线性结构

来源:互联网 发布:淘宝 卓诗尼 编辑:程序博客网 时间:2024/06/05 04:38

2.1 线性表及其实现

【分析】如何表示多项式?

多项式的关键数据:

多项式的项数n

各项系数ai及指数i


方法1:顺序存储结构直接表示

数组各分量对应多项式各项:

a[ i ] : 项 x^i 的系数 ai

两个多项式相加:变成两个数组对应分量相加。


方法2:顺序存储结构表示非零项

结构数组表示:数组分量是由系数 ai ,指数 i 组成的结构,对应一个非零项。

按指数大小储存。

相加过程:从头开始,比较两个多项式当前对应项的指数。


方法3:链表结构存储非零项

链表中每个结点存储多项式中的一个非零项,包括系数和指数两个数据域以及一个指针域。


多项式表示问题的启示:

1.同一个问题可以有不同的表示(存储)方法

2.有一类共性问题:有序线性序列的组织和管理

“线性表(linear list)”:由同类型数据元素构成有序序列的线性结构

表中元素的个数称为线性表的长度

线性表没有元素时,称为空表

表起始位置称表头,表结束位置称表尾

线性表的抽象数据类型描述——

类型名称:线性表

数据对象集:线性表是n(≥0)个元素构成的有序序列

操作集:~

1.建立一个空表

2.表里找位序为k的元素

3.在表里找元素第一次出现的位置

4.在位序前插入新元素

5.删除指定元素

6.返回线性表的长度n


线性表的顺序存储实现

利用数组的连续存储空间顺序存放线性表的各元素

~

~


主要操作的实现

1.初始化(建立空的顺序表)

~

2.查找

~

3,插入

~

循环-先移动,再插入。

插入实现的代码

~~~要自己打一遍这里的代码~~~


4.删除(删除表的)

~删除操作实现~

~~~删除实现的代码~~~


线性表的链式存储实现

不要求逻辑上相邻的两个元素物理上也相连;通过“链”建立起数据元素之间的逻辑关系。

插入/删除不需要移动数据元素,只需要修改“链”。

1.求表长(链表-遍历)

~~~要自己打一遍这里的代码~~~

2.查找

(1)按序号查找:FindKth

~

p = p->Next;

~

(2)按值查找

~

while(p ! )


3.插入(一定要知道插在哪个结点的后面,即前一个结点是谁)

~

s->Next = p->Next;

p->Next = s; 

~

不可以把这两句代码的顺序调换,因为调换后会变成  p->Next 指向s,s-> 指向p->Next也就是



阅读全文
0 0
原创粉丝点击