//顺序表
#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. 【面试题】面试官:请你实现一个深拷贝,那如果是正则/set/函数怎么拷贝?

    一.面试官灵魂三连问: 你知道哪些拷贝的方法? 让你实现一个深拷贝怎么实现? 那像正则.Set.Map.函数等如何拷贝? 二.浅拷贝方法 自己创建一个新对象,来接收你要重新复制或引用的对象值.如果对象 ...

  2. DOM状态监听(观察者模式)

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  3. 12组-Alpha冲刺-6/6

    12组-Alpha冲刺-6/6 一.基本情况 队名:字节不跳动 组长博客:https://www.cnblogs.com/147258369k/p/15573118.html 小组人数:10人 二.冲 ...

  4. pycharm—python__________windows下安装

    参考地址:https://www.runoob.com/w3cnote/pycharm-windows-install.html 一.安装python       1.pip 和 setuptools ...

  5. 剑指 Offer 链表

    06. 从尾到头打印链表 class Solution { public: //两个指针一起走 一次翻转一个方向 最后head.next =null ListNode* reverse1(ListNo ...

  6. PostgreSQL-14 安装配置-wsl_v1_ubuntu22.04

    环境准备 pgAdmin: Cisco2022 postgrep数据库: postgres: Postgres_2023 install https://learn.microsoft.com/en- ...

  7. kubernetes弃用dockershim

    转载自:https://www.51cto.com/article/710688.html 前段时间,kubernetes推出了1.24版本,曾经轰动一时的docker弃用也正式实装了,这意味着1.2 ...

  8. uni-app 声音/震动提示,播放系统默认消息声音 安卓(Android)测试通过

    可以跟据自己需求使用,有不足的地方希望大家帮忙补充 参数 type Options vibrate:震动 othre:铃声 1 msg_remind(type) 2 { 3 if(type=='vib ...

  9. UVM reg model 常见问题记录

    1.仿真log中报出大量的"include_coverage not located, did you mean ***"? (1) user在构建register model或者 ...

  10. sudo apt update 没有 Release 文件

    注: 不同环境出错原因可能不同,本文仅供参考. 今天在Ubuntu 19.04 系统运行指令 sudo apt update 时,忽然提示错误,报错如下: 404 Not Found [IP: 101 ...