一、题目简介

实现顺序表的创建、初始化、赋值、插入、删除、按数据查找元素位置、按元素位置查找数据、清空、删除

的操作,以上操作用可用菜单选项完成

二、源程序代码

#include<iostream>
#define MAXSIZE 100
using namespace std;
typedef int ElemType;
typedef struct List
{
ElemType *elem;
int length;
}Sqlist;
void InitList(Sqlist &L);
void DestroyList(Sqlist &L);
void ClearList(Sqlist &L);
void GetLength(Sqlist L);
void isEmpty(Sqlist L);
void Getelem(Sqlist &L,int i);
void Locateelem(Sqlist &L,ElemType e);
void ListInsert(Sqlist &L,int i,ElemType e);
void ListDelete(Sqlist &L,int i);
void fuzhi(Sqlist &L);
void print(Sqlist &L);
void mainscreen();
int main()
{
mainscreen();
return ;
}
void InitList(Sqlist &L)
{
L.elem=new ElemType[MAXSIZE];
if(!L.elem){
cout<<"内存空间分配失败"<<endl;
}
L.length=;
cout<<"顺序表初始化成功"<<endl;
}
void mainscreen()
{
int flag=;
while(flag==)
{
cout<<"请选择对顺序表的操作"<<endl;
cout<<"\t1 初始化顺序表"<<endl;
cout<<"\t2 给顺序表赋值"<<endl;
cout<<"\t3 向顺序表中插入数据元素"<<endl;
cout<<"\t4 向顺序表中删除数据元素"<<endl;
cout<<"\t5 清空顺序表"<<endl;
cout<<"\t6 删除顺序表"<<endl;
cout<<"\t7 根据数据元素查询在顺序表中位置"<<endl;
cout<<"\t8 根据在顺序表中位置查询数据元素"<<endl;
cout<<"\t9 查询顺序表长度"<<endl;
cout<<"\t10 输出顺序表"<<endl;
cout<<"\t11 退出操作"<<endl;
int s;
cin>>s;
if(<=s<=)
{
switch(s)
{
case :
Sqlist L;
InitList(L);
break;
case :
fuzhi(L);
break;
case :
int a;
ElemType e;
cout<<"请输入你要插入的数据元素位置"<<endl;
cin>>a;
cout<<"请输入你要插入的数据元素"<<endl;
cin>>e;
ListInsert(L,a,e);
break;
case :
int b;
cout<<"请输入你要删除的数据元素位置"<<endl;
cin>>b;
ListDelete(L,b);
break;
case :
ClearList(L);
break;
case :
DestroyList(L);
break;
case :
ElemType f;
cout<<"请输入你要查找的数据元素"<<endl;
cin>>f;
Locateelem(L,f);
break;
case :
int c;
cout<<"请输入你要查找的数据元素的位置"<<endl;
cin>>c;
Getelem(L,c);
break;
case :
GetLength(L);
break;
case :
print(L);
break;
case :
flag=;
cout<<"已成功退出对顺序表的操作"<<endl;
exit();
break;
}
}
}
}
void DestroyList(Sqlist &L)
{
if(L.elem)
{
delete[] L.elem;
cout<<"顺序表删除成功"<<endl;
}
else{
cout<<"顺序表删除失败"<<endl;
}
}
void ClearList(Sqlist &L)
{
L.length=;
cout<<"顺序表清空成功"<<endl;
}
void GetLength(Sqlist L)
{
cout<<"顺序表中有"<<L.length<<"个元素"<<endl;
}
void isEmpty(Sqlist L)
{
if(L.length==)
cout<<"顺序表为空"<<endl;
else
cout<<"顺序表不为空"<<endl;
}
void Getelem(Sqlist &L,int i)
{
ElemType e;
if(i<||i>L.length){
cout<<"输入的查找参数错误"<<endl;
}
else{
e=L.elem[i-];
cout<<"查找成功"<<endl;
cout<<"顺序表中第"<<i<<"个数据元素是"<<e<<endl;
}
}
void Locateelem(Sqlist &L,ElemType e)
{
int i=;
int flag=;
for(i=;i<L.length;i++)
{
if(L.elem[i]==e){
cout<<"查找成功"<<endl;
cout<<e<<"位于顺序表中第"<<i+<<"个数据元素"<<endl;
flag=;
}
}
if(flag==)
cout<<"查找失败"<<endl;
}
void ListInsert(Sqlist &L,int i,ElemType e)
{
int j=;
if(i<||i>L.length)
{
cout<<"输入的查找参数错误"<<endl;
}
if(L.length==MAXSIZE)
{
cout<<"当前储存空间已满,无法插入"<<endl;
}
for(j=L.length-;j>=i-;j--)
{
L.elem[j+]=L.elem[j];
}
L.elem[i-]=e;
++L.length;
cout<<"插入顺序表中第"<<i<<"个数据元素成功"<<endl;
}
void ListDelete(Sqlist &L,int i)
{
int j=;
if(i<||i>L.length)
{
cout<<"输入的查找参数错误"<<endl;
}
for(j=i;j<=L.length-;j++)
{
L.elem[j-]=L.elem[j];
}
--L.length;
cout<<"删除顺序表中第"<<i<<"个数据元素成功"<<endl;
}
void fuzhi(Sqlist &L)
{
int n,m;
cout<<"请输入赋值的数据元素个数"<<endl;
cin>>n;
for(int i=;i<n;i++)
{
cout<<"请输入第"<<i+<<"的数据元素的值"<<endl;
cin>>m;
L.elem[i]=m;
L.length++;
}
cout<<"赋值成功"<<endl;
}
void print(Sqlist &L)
{
for(int i=;i<L.length;i++)
{
cout<<"第"<<i+<<"的数据元素的值:";
cout<<L.elem[i]<<endl;
}
cout<<"顺序表输出完成"<<endl;
}

最新文章

  1. Collections.unmodifiableMap
  2. 计划参照mysql-proxy编写mssql-proxy
  3. (1)创建一个叫做People的类: 属性:姓名、年龄、性别、身高 行为:说话、计算加法、改名 编写能为所有属性赋值的构造方法; (2)创建主类: 创建一个对象:名叫“张三”,性别“男”,年龄18岁,身高1.80; 让该对象调用成员方法: 说出“你好!” 计算23+45的值 将名字改为“李四”
  4. 小组开发项目NABC分析
  5. IEEE Floating Point Standard (IEEE754浮点数表示法标准)
  6. c++ switch case
  7. (原)ubuntu16在torch中使用caffe训练好的模型
  8. 看透SpringMVC源代码分析与实践 Markdown记录
  9. ABP+AdminLTE+Bootstrap Table权限管理系统一期
  10. oop学习 计算器类的规划
  11. Linux中的高级文本处理命令,cut命令,sed命令,awk命令
  12. 解决ActionBar中的item不显示在ActionBar的问题
  13. Spring Boot 揭秘与实战(七) 实用技术篇 - 异步任务
  14. 感谢大家对《Cocos2d-JS开发之旅》的支持
  15. memcache图形管理工具
  16. 微信小程序 - 实现购物车结算
  17. C# 计算当前时间距离今晚00:00:00还有多少分多少秒
  18. Linux 自动化部署
  19. MSSQL排序规则冲突
  20. django 前端传文件到后台项目目录

热门文章

  1. SVG和canvas的区别
  2. sql注入小姿势
  3. CSS3绘制不规则图形,代码收集
  4. Navicat for MySQL怎么往表中填数据
  5. IPSec的高可用性技术
  6. Educational Codeforces Round 80 C. Two Arrays(组合数快速取模)
  7. mybatis源码探索笔记-2(构建SqlSession并获取代理mapper)
  8. BIND DNS配置!
  9. Jquery 动态交换两个div位置并添加Css动画效果
  10. FTP-Publisher Plugin