线性表之顺序表 图解和代码实现
2013-03-11 21:10
393 查看
线性表的顺序存储结构称为顺序表。
图解:
下面来看下顺序表的C++实现:
SeqList.h文件
SeqList.cpp文件
图解:
下面来看下顺序表的C++实现:
SeqList.h文件
//SeqList.h 声明类SeqList,文件名为SeqList.h #ifndef SeqList_H #define SeqList_H const int MaxSize=100; //100只是示例性的数据,可以根据实际问题具体定义 template <class T> //定义模板类SeqList class SeqList { public: SeqList( ); //无参构造函数 SeqList(T a[], int n); //有参构造函数 ~SeqList(); //析构函数为空 int Length(); //求线性表的长度 T Get(int i); //按位查找,取线性表的第i个元素 int Locate(T x); //按值查找,求线性表中值为x的元素序号 void Insert(int i, T x); //在线性表中第i个位置插入值为x的元素 T Delete(int i); //删除线性表的第i个元素 void PrintList(); //遍历线性表,按序号依次输出各元素 private: T data[MaxSize]; //存放数据元素的数组 int length; //线性表的长度 }; #endif
SeqList.cpp文件
//SeqList.cpp #include "SeqList.h" /* *前置条件:顺序表不存在 *输 入:无 *功 能:构建一个顺序表 *输 出:无 *后置条件:构建一个顺序表 */ template <class T> SeqList<T>:: SeqList( ) { length=0; } /* *前置条件:顺序表不存在 *输 入:顺序表信息的数组形式a[],顺序表长度n *功 能:将数组a[]中元素建为长度为n的顺序表 *输 出:无 *后置条件:构建一个顺序表 */ template <class T> SeqList<T>:: SeqList(T a[], int n) { if (n>MaxSize) throw "参数非法"; for (int i=0; i<n; i++) data[i]=a[i]; length=n; } /* *前置条件:无 *输 入:无 *功 能:无 *输 出:无 *后置条件:无 */ template <class T> SeqList<T>:: ~SeqList( ) { } /* *前置条件:顺序表存在 *输 入:插入元素x,插入位置i *功 能:将元素x插入到顺序表中位置i处 *输 出:无 *后置条件:顺序表插入新元素 */ template <class T> void SeqList<T>::Insert(int i, T x) { int j; if (length>=MaxSize) throw "上溢"; if (i<1 || i>length+1) throw "位置"; for (j=length; j>=i; j--) data[j]=data[j-1]; //注意第j个元素存在数组下标为j-1处 data[i-1]=x; length++; } /* *前置条件:顺序表存在 *输 入:要删除元素位置i *功 能:删除顺序表中位置为i的元素 *输 出:无 *后置条件:顺序表删除元素 */ template <class T> T SeqList<T>::Delete(int i) { int x,j; if (length==0) throw "下溢"; if (i<1 || i>length) throw "位置"; x=data[i-1]; for (j=i; j<length; j++) data[j-1]=data[j]; //注意此处j已经是元素所在的数组下标 length--; return x; } /* *前置条件:顺序表存在 *输 入:无 *功 能:输出顺序表长度 *输 出:顺序表长度 *后置条件:顺序表不变 */ template <class T> int SeqList<T>::Length() { return length; } /* *前置条件:顺序表存在 *输 入:查询元素位置i *功 能:按位查找位置为i的元素并输出值 *输 出:查询元素的值 *后置条件:顺序表不变 */ template <class T> T SeqList<T>::Get(int i) { if (i<1 && i>length) throw "查找位置非法"; else return data[i-1]; } /* *前置条件:顺序表存在 *输 入:查询元素值x *功 能:按值查找值的元素并输出位置 *输 出:查询元素的位置 *后置条件:顺序表不变 */ template <class T> int SeqList<T>::Locate(T x) { for (int i=0; i<length; i++) if (data[i]==x) return i+1 ; //下标为i的元素等于x,返回其序号i+1 return 0; //退出循环,说明查找失败 } /* *前置条件:顺序表存在 *输 入:无 *功 能:顺序表遍历 *输 出:输出所有元素 *后置条件:顺序表不变 */ template <class T> void SeqList<T>::PrintList() { for(int i=0;i<length;i++) cout<<data[i]<<endl; }
相关文章推荐
- 线性表之顺序表 图解和代码实现
- 线性表_双向循环链表(Caesar加密变换结点顺序 代码实现 )
- 栈的顺序存储结构——顺序栈 图解和代码实现
- 线性结构的顺序存储和链式存储的实现代码(二)
- java实现顺序结构线性列表的函数代码
- 线性表之单链表 图解和代码实现
- 线性表之单链表 图解和代码实现
- 数据结构学习-线性表-顺序表的代码实现
- 顺序线性表的代码实现
- 数据结构 - 线性表(顺序表)C语言代码实现-处理整型数据(附详细解释)。 _清风明月
- 线性表之单链表 图解和代码实现
- 线性结构的顺序存储和链式存储的实现代码(一)
- 严蔚敏--线性表的顺序表示和实现 代码
- 线性表之单链表 图解和代码实现
- 查找技术之线性表 图解和代码实现
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)
- php线性表顺序存储实现代码(增删查改)
- 《数据结构》线性表:顺序存储结构(顺序表的)实现示例代码
- 数据结构之线性表代码实现顺序存储,链式存储,静态链表(选自大话数据结构)