当前位置:高等教育资讯网  >  中国高校课件下载中心  >  大学文库  >  浏览文档

《数据结构 Data Structure》课程教学资源(PPT课件讲稿)第二章 线性表

资源类别:文库,文档格式:PPT,文档页数:87,文件大小:1.02MB,团购合买
 线性表  顺序表  单链表  循环链表  双向链表  多项式 线性表的物理实现 单链表的变化形式 链表的应用
点击下载完整版文档(PPT)

第二章线性表 线性表 顺序表 单链表 线性表的物理实现 ·循环链表 双向链表单链表的变化形就 多项式链表的应用

1 第二章 线性表  线性表  顺序表  单链表  循环链表  双向链表  多项式 线性表的物理实现 单链表的变化形式 链表的应用

第二章线性表 §2.1线性表 定义 n(≥0)个表项的有限序列 u142…n a是表项,m是表长度。 第一个表项是表头,最后一个是表尾

2 第二章 线性表 §2.1 线性表 • 定义 n(  0)个表项的有限序列 L =(a1 , a2 , …, an) – ai是表项,n是表长度。 – 第一个表项是表头,最后一个是表尾

线性表的特点 为简单起见,假定表中元素的数据类型 相同 线性表中,结点和结点间的关系是一对 的 有序表和无序表 线性表的存储方式 顺序存储方式—顺序表 链表存储方式—链表

• 线性表的特点 –为简单起见,假定表中元素的数据类型 相同 – 线性表中,结点和结点间的关系是一对 一的 – 有序表和无序表 • 线性表的存储方式 –顺序存储方式 —— 顺序表 – 链表存储方式 —— 链表 a1 a2 a3 a4 a5 a6 3

§22顺序表 顺序表可用一维数组实现 c i=0时 LoC (i LOC(i-1)+l,i>0时 0123456789 a35274918605477834102 乙* LOC (i)=LOC(i-1)+l=a+i*

§2.2 顺序表 顺序表可用一维数组实现    − +  = = ( ) , 0 时 α , 0 时 ( ) LOC i l i i LOC i 1 LOC ( i ) = LOC ( i -1 ) + l =α+ i*l 4

顺序表的定义 将线性表中的元素相继存放在一个连续的存 储空间中 顺序表的特点 各表项的逻辑顺序与物理顺序一致 对各个表项可以顺序访问,也可以随机访问

顺序表的定义 - 将线性表中的元素相继存放在一个连续的存 储空间中 顺序表的特点 - 各表项的逻辑顺序与物理顺序一致 - 对各个表项可以顺序访问,也可以随机访问 5

结点的变体(异质数据) 25s33.36274“t1.0“6 若想在线性表中存放不同类型的数据,可采用等价 定义unon: typedef union int val: 按 data. va引用 char c h 按 data. ch引用 float dir. 按 data. diri引用 union data * link;/按data.ink引用 }data;/蹩体上是同一类型data

6 结点的变体(异质数据) • 若想在线性表中存放不同类型的数据,可采用等价 定义union: typedef union { int val; //按data.val引用 char ch; //按data.ch引用 float dir; //按data.dir引用 union data *link; //按data.link引用 } data; //整体上是同一类型data 25 ‘s’ 3.3 62 74 ‘t’ 1.0 ‘6’

顺序表( Senlis类的定义 #include ∥定义在“ seqlist. h”中 #include nclude“ linear list. h" const int defaultsize =100 template class e> class Seqlist: public linearlistse>& protected E *data /存放数组 int max Size:大可容纳表项的项数 int last ∥当前已存表项的最后位置 void resize( int newSize);/改变数组空间大小

7 顺序表(SeqList)类的定义 #include //定义在“seqList.h”中 #include #include “linearList.h" const int defaultSize = 100; template class SeqList: public LinearList { protected: E *data; //存放数组 int maxSize; //最大可容纳表项的项数 int last; //当前已存表项的最后位置 void reSize(int newSize); //改变数组空间大小

public Seqlist(int sz= defaultsize ) 构造函数 Seqlist(seqlist& l) ∥复制构造函数 Seqlisto deletel] data; ∥析构函数 int Size( const{ return max Size;}求表最大容量 int Length0 const{ return last-+l;}计算表长度 int Search(E& x)const ∥搜索在表中位置,函数返回表项序号 int Locate(int 1)const; ∥定位第1个表项,函数返回表项序号 bool getData(inti,E&x) const,/取第个表项的值 bool Insert(int i,E x) /插入 bool remove(int i, e& x) /删除

8 public: SeqList(int sz = defaultSize); //构造函数 SeqList(SeqList& L); //复制构造函数 ~SeqList() {delete[ ] data;} //析构函数 int Size() const {return maxSize;} //求表最大容量 int Length() const {return last+1;} //计算表长度 int Search(E& x) const; //搜索x在表中位置,函数返回表项序号 int Locate(int i) const; //定位第 i 个表项,函数返回表项序号 bool getData(int i, E& x) const; //取第i个表项的值 bool Insert(int i, E x); //插入 bool Remove(int i, E& x); //删除 };

顺序表的构造函数 include∥操作“exit”存放在此 # include" seqlist. h/操作实现放在 seqList. cpp? template Seqlist: Seqlist(int szi if(z>0){ maxSize=sz: last=-1 daa=newE[ maxsize];∥刨建表存储数组 if(data=NULL){∥2态分配失败 cerr<<"存储分配错误!"<<endl: eX

9 顺序表的构造函数 #include //操作“exit”存放在此 #include “seqList.h” //操作实现放在“seqList.cpp” template SeqList::SeqList(int sz) { if (sz > 0) { maxSize = sz; last = -1; data = new E[maxSize]; //创建表存储数组 if (data == NULL){ //动态分配失败 cerr << "存储分配错误!" << endl; exit(1); } } };

复制构造函数 template Seqlist: Seqlist( Seqlist&l)i maxSize=L Size; last=L. Length0-1 E value data=newE[ maxSize];1创建存储数组 if ( data== NULL) ∥励动态分配失败 {cerr<<"存储分配错误!"<<endl;exi(1);} for(inti=1;i<= last+1;计++)传送各个表项 (L getData(i, value); datai-1=value; 1

10 template SeqList::SeqList ( SeqList& L ) { maxSize = L.Size(); last = L.Length()-1; E value; data = new E[maxSize]; //创建存储数组 if (data == NULL) //动态分配失败 {cerr << "存储分配错误!" << endl; exit(1);} for (int i = 1; i <= last+1; i++) //传送各个表项 {L.getData(i, value); data[i-1] = value;} }; 复制构造函数

点击下载完整版文档(PPT)VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
共87页,可试读20页,点击继续阅读 ↓↓
相关文档

关于我们|帮助中心|下载说明|相关软件|意见反馈|联系我们

Copyright © 2008-现在 cucdc.com 高等教育资讯网 版权所有