首页 > 编程语言 >C++实现顺序表相关操作

C++实现顺序表相关操作

时间:2022-12-19 19:45:01浏览次数:47  
标签:Status 顺序 cout int Elemtype C++ length Sqlist 操作

//顺序表
#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, Elemtype e);//创建顺序表
Status Getlist(Sqlist L, int i, Elemtype& e);//顺序表取值
Status Locatelist(Sqlist L, Elemtype e);//顺序表查找值
Status Insertlist(Sqlist& L, Elemtype e, Elemtype 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, L.length))
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, Elemtype e)//创建顺序表
{
cout << "输入顺序表的数据:";
for (int i = 0; i < e; i++)
{
int m;
cin >> m;
L.elem[i] = m;
}
return OK;
}
Status Getlist(Sqlist L, int i, Elemtype& e)//顺序表取值
{
if (i<1 || i>(L.length - 1)) 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 << "位";
break;
}
}
return OK;
}
Status Insertlist(Sqlist& L, Elemtype e, Elemtype m)//顺序表插入值,e为插入元素,m为插入位置
{
if (m<1 || m>(L.length + 1)) return ERROR;
if (L.length == MAXSIZE) return ERROR;
for (int i = L.length ; 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;
}

标签:Status,顺序,cout,int,Elemtype,C++,length,Sqlist,操作
From: https://www.cnblogs.com/shidawuyu/p/16992942.html

相关文章

  • 剑指offer 数字在排序数组中出现的次数(C++)
    题目描述统计一个数字在排序数组中出现的次数。代码实现classSolution{public:intGetNumberOfK(vector<int>data,intk){if(data.empty())re......
  • 剑指offer 二叉树的深度(C++)
    题目描述输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。代码实现/*structTreeNode{intval;......
  • 剑指offer 字符串的排列(C++)
    题目描述输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。输入描述:......
  • 剑指offer 二叉树的镜像(C++)
    问题描述操作给定的二叉树,将其变换为源二叉树的镜像。输入描述:二叉树的镜像定义:源二叉树8/\610/\/\57911镜像二叉树......
  • LeetCode 两数之和,三数之和,最接近的三数之和,四数之和(C++)
    1.两数之和问题描述给定一个整数数组​​nums​​​和一个目标值​​target​​,请你在该数组中找出和为目标值的那两个整数,并返回他们的数组下标。你可以假设每种输入......
  • LeetCode 有关二叉树的算法题目(C++)
    0、NULL与nullptr的区别在C语言中,​​NULL​​​通常被定义为:​​#defineNULL((void*)0)​​​。因为在C语言中把空指针赋给​​int​​​和​​char​​​指针的时候,发......
  • Idea自动生成get()和set()方法的快捷操作
    1.首先创建好一个类,里面可以暂时有2个属性。publicclassGeometricObject{protectedStringcolor;//protected可以被子类访问protecteddoubleweight;}2.鼠......
  • 剑指offer 题解目录(C++)
    序号题目知识点难度1​​二维数组中的查找​数组查找较难2​​替换空格​字符串较难3​​从尾到头打印链表​链表较难4​​重建二叉树​树中等5​​用两个栈实现队列......
  • C++实现checksum校验和计算
    校验和概念差错控制编码是为了检查传输中的错误下面将一个报文的数据部分称为d,报文的冗余部分称为r发送方根据约定好的差错控制编码关系(关系指出dr之间的关系)和d生成出......
  • Q查询进阶操作 ORM查询优化 only与defer select_related与prefetch_related ORM事务 O
    目录Q查询进阶操作children.append图书查询功能ORM查询优化惰性查询自动分页limitonly与deferonlydeferselect_related与prefetch_relatedselect_relatedprefetch_related......