#include<iostream>using namespace std;#define ERROR 0
#define OK 1
#define MAXSIZE 100 typedef int Status;
typedef int ElemType;typedef struct{ElemType *elem;int length;}SqList;Status InitList(SqList &L)
{//构造一个空的顺序表L L.elem=new ElemType[MAXSIZE];//分配一个大小为MAXSIZE的数组空间给顺序表 if(!L.elem) return ERROR;//存储分配失败退出 L.length=0;//空表长度为0 return OK;
}void ClearList(SqList &L)
{L.length=0;
}//清空该表bool ListEmpty(SqList L){if(L.length==0) return true;else return false;
}//判断是否为空 是TRUE 否FALSEint ListLength(SqList L){return L.length;
}//返回表L的元素个数(求长度)Status GetElem(SqList L,int i,ElemType &e){if(i<1||i>L.length) return ERROR;e=L.elem[i-1];return OK;
} //把第i个元素赋给eStatus LocateElem(SqList L,ElemType e){int i;for(i=0;i<=L.length-1;i++)if(L.elem[i]==e) return i+1;return 0;
}// 返回L中第一个与e相同的位置,没有则返回0Status ListInsert(SqList &L,int i,ElemType e){if( (i<1)||(i>L.length+1) )   return ERROR;if(L.length == MAXSIZE)       return ERROR;for(int j=L.length-1 ;j>=i-1 ;j--){ L.elem[j+1] = L.elem[j];        //插入位置及之后的元素后移} L.elem[i-1] = e;                  //将新元素 e 放入第 i 个位置++L.length;                       //表长加1return OK;
}//在L中第i个位置插入元素eStatus ListDelete(SqList &L,int i){if((i<1)||(i>L.length)) return ERROR;for(int j=i;j<=L.length-1;j++) L.elem[j-1]=L.elem[j];//删除位置后面的元素前移 --L.length;//表的长度减1; return OK;
}//删除L中第i个位置的元素
SqList L;
int main(void){int i,j; InitList(L);cout<< "顺序表基本操作;\n"<< "操作1:创建顺序表,赋值\n"<< "操作2:插入元素\n"<< "操作3:删除元素\n"<< "操作4:查询元素\n"<< "操作5:求表长\n"<< "操作6:清空该表\n"<< "操作7:判断表是否为空\n"<< "操作8:退出\n";while(true){int n,t,x,tt;ElemType sertnum1;int sertnum2,ii;ElemType ss;cout<< "输入操作序号;";cin>>n; switch(n){case 1:t=InitList(L);if(t){cout<<"创建成功,请输入需要赋值的个数:";cin>>x;cout<<"请输入"<<x<<"个数字:" ;for(i=1;i<=x;i++){cin>>tt;ListInsert(L,i,tt);} }else  cout<<"表已存在"<<endl;break;    case 2: cout<<"请输入要插入的元素以及其位置:";cin>>sertnum1>>sertnum2;t=ListInsert(L,sertnum2,sertnum1);if(!t) cout<<"插入失败"<<endl;break;case 3:cout<<"请输入需要删除元素的位置:";cin>>ii;t=ListDelete(L,ii);if(!t) cout<<"删除失败"<<endl;break;case 4:cout<<"请输入需要查询的元素:" ;cin>>ss;t=LocateElem(L,ss);if(t) cout<<t;else cout<<"查无此元素"<<end;break;case 5:t=ListLength(L);cout<<"表长为:"<<t<<endl;break;case 6:  ClearList(L);cout<<"表已清空"<<endl;break;case 7:t=ListEmpty(L);if(t) cout<<"表为空"<<endl;else cout<<"表非空"<<endl; break;case 8:exit(0);default:cout<<"数字非法,请重新输入"<<endl;                     }cout<<"目前表内元素依次为:"<<endl;for(i=1;i<=L.length;i++){ElemType e;GetElem(L,i,e);cout<<e<<" ";}cout<<endl;}return 0;
}

参考书籍《数据结构》严蔚敏

顺序表的简单操作代码(c++实现)相关推荐

  1. java数据结构实验一顺序表,java数据结构实验代码之升序顺序表

    java数据结构实验代码之升序顺序表 数据结构实验报告 学院:管理学院 班级:13电子商务(1)班 姓名:廖秋君 学号:3213004779 2014年 10月 23 日 目录 一.需求分析----- ...

  2. 数据结构学习笔记:顺序表的删除操作及其演化题目总结

    目录 前言 例题 类似题目1 类似题目2 类似题目3 类似题目4 类似题目5 结语 前言 文章代码皆在Dev-C++ 5.11中测试,主要是总结一些方法,从而总结一些规律使自己进一步地深化学习内容,仅 ...

  3. 顺序表的插入与删除java_C++实现顺序表的常用操作(插入删出查找输出)

    实现顺序表的插入,删除,查找,输出操作在C语言中经常用到.下面小编给大家整理实现代码,一起看下吧 代码如下所示: #include using namespace std; #define MAXSI ...

  4. mysql 操作表的例子,mysql中库和表的简单操作总结(附示例)

    本篇文章给大家带来的内容是关于mysql中库和表的简单操作总结(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助. 一. 库的操作 1.创建数据库 创建数据库: create d ...

  5. mysql数据表案例_mysql中库和表的简单操作案例

    mysql中库和表的简单操作案例 发布时间:2020-12-05 09:54:06 来源:亿速云 阅读:71 作者:小新 这篇文章主要介绍mysql中库和表的简单操作案例,文中介绍的非常详细,具有一定 ...

  6. ¥1-1 SWUST oj 941: 有序顺序表的合并操作的实现

    有序顺序表的合并操作的实现 题目描述 源代码 题目描述 源代码 #include<iostream> #include<malloc.h> using namespace st ...

  7. python代码大全表解释-python实现顺序表的简单代码

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存 ...

  8. python顺序表代码_python实现顺序表的简单代码

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存 ...

  9. python简单代码-python实现顺序表的简单代码

    顺序表即线性表的顺序存储结构.它是通过一组地址连续的存储单元对线性表中的数据进行存储的,相邻的两个元素在物理位置上也是相邻的.比如,第1个元素是存储在线性表的起始位置LOC(1),那么第i个元素即是存 ...

  10. 数据结构C语言顺序表入门简单题目你会了吗?

    通常,线性表可以采取顺序存储和链式存储两种,今天我们来讨论下顺序存储结构以及其对应的实现算法. 采用顺序存储是表示线性表的最简单的方法,具体做法是:将线性表中的元素一个接一个地存储在一片相邻的存储区域 ...

最新文章

  1. .NET Framework 4.0的新特性
  2. Reading Club week 3 prepare document
  3. java yml 转 map_如何在Java中将YAML转换为JSON?
  4. Redis系列(二):Redis缓存穿透和缓存雪崩是什么?
  5. Solr及Spring-Data-Solr入门学习
  6. logstash 中multiline插件的用法
  7. 第一百五十期:Java程序员必备:异常的十个关键知识点
  8. AngularJS 的异步服务测试与Mocking
  9. lightning接口_苹果、安卓充电接口有望统一,欧盟重压下,苹果将不得不妥协
  10. Docker最新超详细版教程通俗易懂(基础版)
  11. 软件工程导论复习知识点
  12. 深度学习中的常用的归一化方法汇总
  13. 职业培训学校计算机培训计划,职业技能学校关于计算机应用一级MS-Office培训开班计划.doc...
  14. ypid编码是什么_国家药品供应保障综合管理信息平台YPID编码规则与应用
  15. hadoop+Spark+hbase集群动态增加节点
  16. 牛逼顿的一生:当智商高到一定程度,情商就不重要了
  17. vue+elemnt ul 图片上传隐藏按钮+图片回显
  18. 云服务器虚拟ip绑定主机,如何在云平台上给云主机中的Keepalived的虚拟IP绑定弹性IP?...
  19. 寻找中国的乔布斯 第二届达内发现杯软件大赛决赛开启
  20. 堆排序中的上滤和下滤

热门文章

  1. JAVA动态绑定浅析
  2. HashMap、LinkedHashMap、HashTable、HashSet笔记
  3. linux命令格式,获取帮助及其目录结构简要理解
  4. 在iOS中获取UIView的所有层级结构 相关
  5. 基于 Windows7 + VMware-CentOS7虚拟机 搭建开发模式
  6. win8下hosts保存文档失败,提示:请检查文件是否被另一个应用程序打开
  7. 日志系统实战(一)—AOP静态注入
  8. Ubuntu运行级别与本地ISO软件源
  9. 红帽Linux平台下安装Code::Blocks
  10. 为什么属龙的有二婚命_88属龙的一生婚姻状况详细解析