数据结构课件-线性表顺序表
- 格式:ppt
- 大小:1.95 MB
- 文档页数:15
线性表---顺序表链表⼀、线性表 1、线性表中的元素是⼀对⼀的关系,除了第⼀个与最后⼀个元素之外其他数据元素都是⾸尾相连的。
如果是⼀对多就⽤树来表⽰,如果是多对多就⽤⽹状来表⽰。
2、线性表的两种存储结构顺序表:⽤顺序结构保存数据,数据在内存中是连续的。
链表:⽤链式存储结构保存数据,数据在内存中是不连续的。
⼆、顺序表 1、顺序表:顺序表⼀般使⽤数组实现,顺序表的相关操作与数组相关,⼀般都是移动数组元素顺序表封装所需要的三个属性:存储空间的起始位置。
数组date的存储位置就是线性表存储空间的存储位置。
线性表的最⼤存储容量。
数组长度MAXSIZE.线性表的的当前长度。
length注意:数组的长度与线性表的当前长度是不⼀样的。
数组的长度是线性表的存储空间的总长度,⼀般初始化后不变。
⽽线性表的当前长度是线性表中元素的个数,其⼤⼩是会改变的。
2、顺序表的C++代码实现:模板类的代码1 #include<iostream>2using namespace std;34const int MaxSize = 100;5 template <class DataType>6class SeqList7 {8public:9 SeqList(){length=0;}10 SeqList(DataType a[],int n);11 ~SeqList(){}12int Length(){return length;}13 DataType Get(int i);14int Locate(DataType x);15void Insert(int i,DataType x);16 DataType Delete(int i);17void PrintList();18private:19 DataType data[MaxSize]; //顺序表使⽤数组实现20int length; //存储顺序表的长度21 };2223 template <class DataType>24 SeqList<DataType>::SeqList(DataType a[],int n)25 {26if(n>MaxSize) throw"wrong parameter";27for(int i=0;i<n;i++)28 data[i]=a[i];29 length=n;30 }3132 template <class DataType>33 DataType SeqList<DataType>::Get(int i)34 {35if(i<1 && i>length) throw"wrong Location";36else return data[i-1];37 }3839 template <class DataType>40int SeqList<DataType>::Locate(DataType x)41 {42for(int i=0;i<length;i++)43if(data[i]==x) return i+1;44return0;45 }4647 template <class DataType>48void SeqList<DataType>::Insert(int i,DataType x)//插⼊过程中应注意元素移动的⽅向必须从最后⼀个元素开始移动,如果表满了发⽣上溢出,如果插⼊位置不合理,则引发位置异常。