c++实现线性表中的顺序表(数据结构课程作业)
一、题目简介
实现顺序表的创建、初始化、赋值、插入、删除、按数据查找元素位置、按元素位置查找数据、清空、删除
的操作,以上操作用可用菜单选项完成
二、源程序代码
#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;
}
c++实现线性表中的顺序表(数据结构课程作业)的更多相关文章
- PHP数据结构之二 线性表中的顺序表的PHP实现
线性表 (一)基本特点:最基本.最简单.最常用的一种数据结构 在这种结构中: 1.存在一个唯一的被称为“第一个”的数据元素: 2.存在一个唯一的被称为“最后一个”的数据元素: 3.除第一个元素外,每个 ...
- 关于数据库优化1——关于count(1),count(*),和count(列名)的区别,和关于表中字段顺序的问题
1.关于count(1),count(*),和count(列名)的区别 相信大家总是在工作中,或者是学习中对于count()的到底怎么用更快.一直有很大的疑问,有的人说count(*)更快,也有的人说 ...
- 老郭带你学数据结构(C语言系列)2-线性表之动态顺序表
一.基本概念: 线性表:由n个类型相同的数据元素组成的有限序列,记为(a1,a2,--an). 线性表的特征:其中的元素存在这序偶关系,元素之间存在着严格的次序关系. 顺序存储表:线性表中的元素依次存 ...
- 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表
在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...
- B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序
B表中的pid对应A表中id,查询A表中数据,根据b表中对应a表中该id的数据数目排序 select a.*,count(*) as c from a left join b on a.id=b.ai ...
- python中的顺序表
Python中的list和tuple两种类型采用了顺序表的实现技术,tuple是不可变类型,即不变的顺序表,因此不支持改变其内部状态的任何操作,而其他方面,则与list的性质类似. list的基本实现 ...
- K:线性表的实现—顺序表
所谓顺序表,就是顺序存储的线性表.顺序存储就是用一组地址连续的存储单元依次存放线性表中各个数据元素的存储结构. 线性表中所有数据元素的类型是相同的,所以每一个数据元素在存储器中占用相同的大小的空间.假 ...
- 【线性表基础】顺序表和单链表的插入、删除等基本操作【Java版】
本文表述了线性表及其基本操作的代码[Java实现] 参考书籍 :<数据结构 --Java语言描述>/刘小晶 ,杜选主编 线性表需要的基本功能有:动态地增长或收缩:对线性表的任何数据元素进行 ...
- laravel如何A表中包含B表中信息
A表中如何包含B表中的信息 首先看A表的信息 接着看B表的信息 我的需求就是 A表字段name对应B表字段ream_name然后得到B表的对应主键ID要在A表中查询出来 发现问题就是查询出来的id和A ...
随机推荐
- 2.1.FastDFS-单机拆分版-单机版安装配置
Centos610系列配置 1.什么是FastDFS? FastDFS是一个开源的分布式文件系统,她对文件进行管理,功能包括:文件存储.文件同步.文件访问(文件上传.文件下载)等,解决了大容量存储和负 ...
- Anniversary party POJ - 2342
题目链接 经典的树形dp,最大独立集,对于每个点就有2个状态,选/不选 设\(dp_{i,0}\)表示不选第i个,\(dp_{i,1}\)表示选第i个,容易得到其状态转移 \(dp_{i,0} = \ ...
- javascript的阻止默认事件和阻止冒泡事件
这两个方面的知识,在妙味课堂中有听过,再次复习一下: 原文来自:[http://www.cnblogs.com/Essence/p/4266618.html] 事件冒泡与默认行为 在说事件冒泡之前 ...
- 《Web安全攻防 渗透测试实战指南 》 学习笔记 (五)
Web安全攻防 渗透测试实战指南 学习笔记 (五) 第四章 Web安全原理解析 (一) (一)SQL注入的原理 1.web应用程序对用户输入数据的合法性没有判断. 2.参数用户可控:前端传给 ...
- tkinter的listbox、radiobutton和checkbutton学习(2)
1.tkinter的listbox 1.1 代码 #第1步,导出模块 import tkinter as tk #定义窗口,及其标题.大小和位置 win = tk.Tk() win.title('Li ...
- 解决小程序报错 Page "pages/index/main" has not been registered yet.
在小程序开发中,会频繁遇到 Page "pages/index/main" has not been registered yet. 这种报错,意思就说指定的页面没有注册,找 ...
- 转发-[原创]ASR1K 在Rommon导入IOS-XE启动
在相对较老的设备平台可以通过在rommon下使用以下命令导入IOS. rommon 1 > IP_ADDRESS=192.168.1.2rommon 2 > IP_SUBNET_MASK= ...
- 牛客-Y 老师的乐高小镇
链接:https://ac.nowcoder.com/acm/contest/3667/I来源:牛客网 题目描述 Y 老师从小喜欢用乐高搭建自己喜欢的模型,这不突然有一天 Y 老师想用乐高建造一个神奇 ...
- Ubantu 固定IP
ubantu固定IP设置 1.以root身份登录 2. vi /etc/network/interfaces 参照截图修改,保存退出 3.刷新接口,重启服务 /etc/init.d/networkin ...
- MVC集合ModelBinder
使用腳本提交集合类时,MVC binding public class FormExtensionValueProviderFactory : ValueProviderFactory { publi ...