//顺序表
#include<iostream>
#include<cstdlib>//C中stdlib.h动态分配内存
using namespace std;
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef int Elemtype;
//线性表类型定义
//顺序表的存储结构,结构体类型
typedef struct
{
Elemtype* elem;//动态开辟存储空间
int length;//当前数组的长度
}Sqlist;//顺序表结构类型为Sqlist
Status Initlist(Sqlist& L);//初始化顺序表
Status Createlist(Sqlist& L);//创建顺序表
Status Getlist(Sqlist L, int i, Elemtype& e);//顺序表取值
Status Locatelist(Sqlist L, Elemtype e);//顺序表查找值
Status Insertlist(Sqlist& L, Elemtype e, int m);//顺序表插入值
Status Deletelist(Sqlist& L, int i);//顺序表删除值
Status Printlist(Sqlist L);//顺序表打印
int main(void)
{
int k = 0;
Sqlist L;
do
{
cout << "*****顺序表相关操作******";
cout << "\n1.初始化顺序表";
cout << "\n2.创建顺序表";
cout << "\n3.顺序表取值";
cout << "\n4.顺序表查找值";
cout << "\n5.顺序表插入值";
cout << "\n6.顺序表删除值";
cout << "\n7.顺序表打印";
cout << "\n0.结束操作";
cout << "\n输入想要进行的操作数为:";
cin >> k;
switch (k) {
case 1:
{
if (Initlist(L))
cout << "初始化成功!" << endl;
else
cout << "初始化失败!" << endl;
}break;
case 2:
{
cout << "该顺序表长度length为:";
cin >> L.length;
if (Createlist(L))
cout << "创建成功!" << endl;
else
cout << "创建失败!" << endl;
}break;
case 3:
{
int a;
cout << "想要取出顺序表值的位置为:";
cin >> a;
int e = 0;
if (Getlist(L, a, e))
cout << "取值成功!" << endl;
else
cout << "取值失败!" << endl;
}break;
case 4:
{
int b;
cout << "想要查找顺序表元素为:";
cin >> b;
if (Locatelist(L, b))
cout << "查找成功!" << endl;
else
cout << "查找失败!" << endl;
}break;
case 5:
{
int d;
cout << "想要插入顺序表的元素为:";
cin >> d;
int c;
cout << "想要插入顺序表元素的位置为:";
cin >> c;
if (Insertlist(L, d, c))
cout << "插入成功!" << endl;
else
cout << "插入失败!" << endl;
}break;
case 6:
{
int f;
cout << "想要删除顺序表元素的位置为:";
cin >> f;
if (Deletelist(L, f))
cout << "删除成功!" << endl;
else
cout << "删除失败!" << endl;
}break;
case 7:
{
if (Printlist(L))
cout << "打印成功!" << endl;
else
cout << "打印失败!" << endl;
}break;
}
} while (k != 0);
return OK;
}
Status Initlist(Sqlist& L)//初始化顺序表
{
L.elem = new Elemtype[MAXSIZE];//为顺序表分配一个数组空间
if (!L.elem) exit(OVERFLOW);
L.length = 0;
return OK;
}
Status Createlist(Sqlist& L)//创建顺序表
{
int m;
cout << "输入顺序表的数据:";
for (int i = 0; i < L.length; i++)
{
cin >> m;
L.elem[i] = m;
}
return OK;
}
Status Getlist(Sqlist L, int i, Elemtype& e)//顺序表取值
{
if (i<1 || i>L.length) return ERROR;
e = L.elem[i - 1];
cout << "顺序表取值为:" << e << endl;
return OK;
}
Status Locatelist(Sqlist L, Elemtype e)//顺序表查找值
{
for (int i = 0; i < L.length; i++)
{
if (L.elem[i] == e)
{
int k = 0;
k = i + 1;
cout << "顺序表查找元素位置在第" << k << "位";
return OK;
}
}
return ERROR;
}
Status Insertlist(Sqlist& L, Elemtype e, int m)//顺序表插入值,e为插入元素,m为插入位置
{
if (m<1 || m>(L.length + 1)) return ERROR;
if (L.length == MAXSIZE) return ERROR;
for (int i = L.length-1; i >= m - 1; i--)
{
L.elem[i + 1] = L.elem[i];
}
L.elem[m - 1] = e;
++L.length;
return OK;
}
Status Deletelist(Sqlist& L, int i)//顺序表删除值
{
int e = L.elem[i - 1];
for (int k = i; k < L.length; k++)
{
L.elem[i - 1] = L.elem[i];
}
--L.length;
return OK;
}
Status Printlist(Sqlist L)//顺序表打印
{
cout << "顺序表的值顺序输出为:";
for (int i = 0; i < L.length; i++)
{
cout << L.elem[i] << " ";
}
return OK;
}

C++实现顺序表相关操作的更多相关文章

  1. MySQL数据库(二)--库相关操作、表相关操作(1)、存储引擎、数据类型

    一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字.下划线.@.#.$ 区分大小写 唯一性 不能使用 ...

  2. MySQL数据库(二)——库相关操作、表相关操作(一)、存储引擎、数据类型

    库相关操作.表相关操作(一).存储引擎.数据类型 一.库相关操作 1.创建数据库 (1)语法 create database 数据库 charset utf8; (2)数据库命名规范 可以由字母.数字 ...

  3. MYSQL初级学习笔记二:数据表相关操作及MySQL存储引擎!(视频序号:初级_5,7-22|6)

    知识点三:数据表相关操作(5,7-22) --------------------------------整型--------------------------------- --测试整型 CREA ...

  4. MySQL数据库(三)—— 表相关操作(二)之约束条件、关联关系、复制表

    表相关操作(二)之约束条件.关联关系.复制表 一.约束条件  1.何为约束 除了数据类型以外额外添加的约束 2.约束条件的作用 为了保证数据的合法性,完整性 3.主要的约束条件 NOT NULL # ...

  5. 数据结构(C语言版)顺序表相关算法代码实现

    这两天实现了一下顺序表的相关操作,包括顺序表初始化.创建.遍历.第i个元素前插入,删除第i个元素.查找元素e的位置.清空顺序表.销毁顺序表.合并两个非递减顺序表操作. 这次在网上学习到了新的布局方法, ...

  6. ORM表相关操作

    一般操作 看专业的官网文档,做专业的程序员! 必知必会13条 > all(): 查询所有结果 > filter(**kwargs): 它包含了与所给筛选条件相匹配的对象 > get( ...

  7. memcached中hash表相关操作

      以下转自http://blog.csdn.net/luotuo44/article/details/42773231 memcached源码中assoc.c文件里面的代码是构造一个哈希表.memc ...

  8. 66、django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

  9. MySQL之表相关操作

    一 存储引擎介绍 存储引擎即表类型,mysql根据不同的表类型会有不同的处理机制 详见:http://www.cnblogs.com/linhaifeng/articles/7213670.html ...

  10. django之模型层(model)--多表相关操作(图书管理小练习)

    前面几篇随笔的数据库增删改查操作都是在单表的操作上的,然而现实中不可能都是单表操作,更多的是多表操作,一对一,一对多,多对多的表结构才是我们经常需要处理的,本篇将带我们了解多表操作的一些相关操作.也会 ...

随机推荐

  1. Java面向对象之内部类

    内部类 内部类:在一个类的内部再定义一个类,比如,A类中定义一个B类,那么B类相对A类来说就称为内部类,而A类相对于B类来说就是外部类了. 1.成员内部类 2.静态内部类 3.局部内部类 4.匿名内部 ...

  2. 人脸识别:face_recognition初尝试

    在学习face_recognition之前先看git上的另一个项目:face_collection .face_collection某种程度上可以看做是demo,便于我们更好的理解和使用face_re ...

  3. go 下的查询数据库的框架 ORM框架:访问mysql数据库

    运维的基友 习惯使用python了,学习go的时候是不是被gorm 恶心死了 例如python flask 框架下的orm那么好用简单 ,或者号称 世界上最好用的语言php的同学们也是非常的苦恼呢 很 ...

  4. rabbitmq的Exchange类型案例

    一.direct(将消息转发到指定Routing key的Queue上,Routing key的解析规则为精确匹配) publish代码 consumer代码,绑定了另一个队列 优先启动publish ...

  5. git 修改commit 备注

    1.没有push 1.修改最后一次的提交备注 git commit --amend 输入 i 进行编辑模式,修改好以后 esc 退出编辑模式 :wq 保存并退出. 2.修改之前的备注 git reba ...

  6. NGAC下一代访问控制

    NGAC,即下一代访问控制,采用将访问决定数据建模为图形的方法.NGAC 可以实现系统化.策略一致的访问控制方法,以高精细度授予或拒绝用户管理能力. 在这张图中,我们可以看到 /hr-docs 文件夹 ...

  7. Windows Terminal 中 WSL2 默认打开路径

    打开Windows Terminal.鼠标点击进入设置,或者同时按ctrl和逗号.找到如下内容: { "guid": "{07b52e3e-de2c-5db4-bd2d- ...

  8. VM虚拟机的创建和CentOS 7的安装

    1.vm和CentOS的下载. 一:vm和CentOS的下载,这是创建虚拟机和CentOS安装的必要条件. 2.vm虚拟机的创建. 一:打开vm软件界面,会看到虚拟机的字,点击虚拟机开始创建虚拟机.二 ...

  9. (0319) uvm 库的安装编译:

    https://mp.weixin.qq.com/s/jCSp89UYsEZGRU2BN5IloA

  10. ChainofResponsibility Pattern

    责任链模式: 参考:https://www.runoob.com/design-pattern/chain-of-responsibility-pattern.html 避免请求发送者与接收者耦合在一 ...