线性表的顺序存储
来源:互联网 发布:河南省保险数据 编辑:程序博客网 时间:2024/06/06 02:39
这段时间在啃数据结构,就想着将这些数据结构自己编写实现一下。
自身水平有限,如有错误,希望大家指教。
/* 内容:线性表的顺序存储/ 作者:phlixce/ 日期:2017.5.23*/#include<iostream>#include<stdlib.h>#include<time.h>using namespace std;#define MaxSize 20typedef int ElemType;class SeqList{public:bool InitList();//初始化线性表bool DestroyList();//销毁线性表bool ClearList();//清空线性表bool ListEmpty();//判断线性表是否为空ElemType ListLength();//获取线性表长度ElemType GetElem(ElemType i);//获取线性表的第i个元素ElemType LocateElem(ElemType data);//判断data是否在顺序表中bool ListInsert(ElemType i, ElemType data);//在线性表的第i个位置插入databool ListDelete(ElemType i);//删除线性表的第i个元素void DisList();//输出线性表private://私有数据,通过函数访问ElemType *p;ElemType Length;};//初始化线性表bool SeqList::InitList(){p = new ElemType[MaxSize];if(p==NULL)return false;Length=0;return true;}//销毁线性表bool SeqList::DestroyList(){delete []p;/*注意区别delete p与delete []p*/p=NULL;//防止野指针的产生return true;}//清空线性表bool SeqList::ClearList(){SeqList::DestroyList();Length=0;return true;}//判断线性表是否为空bool SeqList::ListEmpty(){if(Length)return true;else return false;}//获取线性表的长度ElemType SeqList::ListLength(){return Length;}//获取线性表的第i个元素ElemType SeqList::GetElem(ElemType i){if(i<0||i>=Length)cout<<"Invalid num input!"<<endl;elsereturn p[i];}//判断data是否在顺序表中ElemType SeqList::LocateElem(ElemType data){for(int i=0; i<Length; i++){if(data == p[i])return i;}return -1;}//在线性表的第i个位置插入databool SeqList::ListInsert(ElemType i, ElemType data){if(Length+1>MaxSize)cout<<"线性表数据已满!"<<endl;else if(i<0)return false;else {for(int j=Length-1;j>=i;j--){p[j+1]=p[j];}p[i]=data; }Length+=1;return true;}//删除i位置上的元素bool SeqList::ListDelete(ElemType i){if(i<0||i>Length-1)return false;else {for(int j=i+1;j<Length;j++){p[j-1]=p[j];} }Length-=1;return true;}//输出线性表void SeqList::DisList(){for(int i=0; i<Length; i++){cout<<p[i]<<" ";}cout<<endl;}int main(){SeqList list;list.InitList();cout<<"线性表初始信息:"<<endl;cout<<"list初始容量为"<<MaxSize<<endl;cout<<"list初始长度为"<<list.ListLength()<<endl;cout<<endl;srand(time(0));int i;int tmp;cout<<"随机生成10个数的线性表!"<<endl;cout<<endl;for(i=0; i<10; i++){tmp=rand()%100+1;list.ListInsert(i,tmp); }cout<<"原始线性表为:"<<endl;list.DisList();cout<<endl;cout<<"在元素3和25分别插入第0个位置和最后一个位置"<<endl;list.ListInsert(0,3);list.ListInsert(list.ListLength(),25);cout<<"插入数据后的线性表为:"<<endl;list.DisList();cout<<endl;cout<<"线性表索引测试:"<<endl;cout<<"线性表第5个数为:"<<list.GetElem(5)<<endl;cout<<endl;cout<<"线性表数据查询:"<<endl;cout<<"查找25在线性表的位置:"<<list.LocateElem(25)<<endl;cout<<endl;cout<<"删除线性表的第5个数:"<<list.GetElem(5)<<"和第8个数:"<<list.GetElem(8)<<endl;list.ListDelete(5);list.ListDelete(8);cout<<"删除数据后的线性表为:"<<endl;list.DisList();cout<<endl;cout<<"清空线性表:"<<endl;list.ClearList();cout<<"清空后的线性表长度为:"<<list.ListLength()<<endl;cout<<endl;cout<<"判断清空后是否为线性表是否为空(0表示空,1表示非空):"<<list.ListEmpty()<<endl;cout<<endl;cout<<"销毁线性表:"<<endl;list.DestroyList();system("pause");}
相关参考:
https://www.anotherhome.net/1553
http://blog.csdn.net/lllcsdn/article/details/50236763
http://www.cnblogs.com/zfc-java/p/6659639.html
阅读全文
0 0
- 线性表的顺序存储
- 顺序存储的线性表
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- 线性表的顺序存储
- Gradle用户使用指南
- html+css+js实现选项卡切换
- 线程同步:何时互斥锁不够,还需要条件变量?
- 单台服务器部署和安装多个不同版本的Tomcat与Jdk
- 单例模式
- 线性表的顺序存储
- leetcode 9. Palindrome Number
- 全面了解 Nginx 主要应用场景
- Kotlin_null安全
- Variance Shadow Maps
- 常见的PHP安全防范
- 应用程序无法正常启动(0xc0000007b),问题修复
- 【python可视化】python 画饼图,柱状图,折线图,条形图
- 灰度变换_MATLAB