线性顺序表的简单操作
来源:互联网 发布:看门狗2低配优化补丁 编辑:程序博客网 时间:2024/05/02 02:31
/*程序的版权和版本声明部分:*Copyright(c)2014,烟台大学计算机学院学生*All rights reserved.*文件名称:*作者:田成琳*完成日期:2014 年 9 月 2 日*版本号:v1.0*对任务及求解方法的描述部分:*问题描述:线性顺序表的简单应用*程序输入*程序输出:*问题分析:*算法设计:*/#include<iostream>#include<cstdlib>using namespace std;const int MaxSize=50; //顺序表中最多元素个数typedef struct{int data[MaxSize]; //存放顺序表中元素int length; //存放顺序表长度}SqList;void InitList(SqList *&L); //初始化线性表,构造空线性表Lvoid CreateList(SqList *L,int a[],int n);//建立顺序表void DestroyList(SqList *&L); //销毁线性表,释放L占用的空间bool ListEmpty(SqList *L); //判断线性表是否为空int ListLength(SqList *L); //返回线性表元素个数void DisplayList(SqList *L); //输出线性表int GetElem(SqList *L,int i,int &e);//求线性表中某个元素值,e返回该数据int LocateElem(SqList *L,int e); //返回线性表中与e相等的元素位置bool ListInsert(SqList *L,int i,int e);//在第i(1<=i<=n)插入元素e到线性表bool ListDelete(SqList *L,int i);//,int &e);//删除数据元素,并用e返回值void InitList(SqList *L){L=(SqList *)malloc(sizeof(SqList));//分配存放线性表的空间L->length=0; //空线性表长度设为0}void CreateList(SqList *L,int a[],int n){ for(int i=0;i<n;i++) L->data[i]=a[i]; L->length=n;}void DestroyList(SqList *&L){free(L);}bool ListEmpty(SqList *L){return(L->length==0);}int ListLength(SqList *L){return(L->length);}void DisplayList(SqList *L){for(int i=0;i<L->length;i++)cout<<L->data[i]<<" "; //遍历输出cout<<endl;}int GetElem(SqList *L,int i,int &e){if(i<1||i>L->length)cout<<"输入数据出错!"<<endl;e=L->data[i-1];return e;}int LocateElem(SqList *L,int e){int i=0;while(i<L->length&&L->data[i]!=e)i++;if(i>L->length)return 0; //未找到返回0elsereturn i+1; //找到返回逻辑序号}bool ListInsert(SqList *L,int i,int e){int j;if(i<1||i>L->length+1)return false; //参数错误i--; //将顺序表逻辑序号转为物理序号for(j=L->length;j>i;j--)L->data[j]=L->data[j-1];//将i及后面元素后移一个位置L->data[i]=e; //插入元素eL->length++; //长度加1return true;}bool ListDelete(SqList *L,int i)//,int &e){ int j;if(i<1||i>L->length+1)return false; //参数错误i--; //将顺序表逻辑序号转为物理序号//e=L->data[i];for(j=i;j<L->length-1;j++)L->data[j]=L->data[j+1];//将i及后面元素前移一个位置L->length--; //长度减1return true;}int main(){ int n,a[MaxSize],e,position; SqList L; bool flag; cout<<"请输入元素个数:"<<endl;cin>>n;cout<<"请输入元素数据:"<<endl; for(int i=0;i<n;i++) cin>>a[i]; CreateList(&L,a,n); flag=ListEmpty(&L); if(flag) cout<<"线性表为空!"<<endl; else cout<<"线性表不为空,线性表的长度为:"<<ListLength(&L)<<endl; cout<<"线性表的所有元素为:"<<endl;DisplayList(&L); cout<<"请输入你想看到的线性表中第几个数:"<<endl; cin>>n; cout<<"线性表中第"<<n<<"个数为:"<<GetElem(&L,n,e)<<endl; cout<<"请输入你想查找的元素值:"<<endl; cin>>n; cout<<"线性表中查找的第一个元素值在第"<<LocateElem(&L,n)<<"位。"<<endl; cout<<"请输入插入元素位置及元素大小:"<<endl; cin>>position>>n; ListInsert(&L,position,n); cout<<"插入完成后线性表变为:"<<endl;DisplayList(&L); cout<<"请输入要删除的元素位置:"<<endl; cin>>n; ListDelete(&L,n); cout<<"删除完成后线性表变为:"<<endl;DisplayList(&L); return 0;}
运行结果:
0 0
- 线性顺序表的简单操作
- 简单的线性表-顺序表
- 线性表-顺序表的简单知识
- 线性顺序表的基本操作
- 顺序线性表的基本操作算法
- 复习一:顺序线性表的操作.
- 线性表的顺序表示和操作
- 线性表----顺序栈的基本操作
- 顺序线性表单链表的操作
- 线性表顺序存储的基本操作
- 线性表顺序存储结构的操作
- 线性表顺序存储结构的操作
- 顺序线性表的基本操作
- 线性表的顺序存储操作
- 顺序表的简单操作
- 顺序表的简单操作
- 线性表顺序存储操作
- 线性表之顺序操作
- arcgis 瓦片图加载规则
- HDU 3061 Battle(最小割----最大权闭合图)
- libghttp 封装使用实例
- 编程之美------之数字之魅
- 程序运行时堆区和栈区的分配
- 线性顺序表的简单操作
- android内存泄露优化总结
- 微博试水卖车社交电商如何令4S“颤抖”?
- BaseAdapter抽取更精简的Adapter,方便复用
- BZOJ 3669 NOI 2014 魔法森林 最短路/LCT
- mysql 更改默认数据库路径
- 生于忧患而死于安乐:程序员如何走出自己的安逸环境
- string.Replace
- 【转】Android setTag和getTag()的使用