C++ struct实现顺序表

#include <iostream>
#include <cstring>
using namespace std;
#define MAXSIZE 1000
typedef int ElemType;typedef struct {ElemType elem[MAXSIZE] ;int length;
} SqList;void InitList(SqList &L) {//初始化memset(L.elem, 0, sizeof(L.elem));L.length = 0;
}bool ClearList(SqList &L) {//清空顺序表L.length = 0;return true;
}int GetLength(SqList L) {//得到长度return (L.length);
}bool IsEmpty(SqList L) {//判断是否为空if (L.length == 0)return true;elsereturn false;
}bool GetElem(SqList L, int i, ElemType &e) {//查询某位置的元素if (i < 1 || i > L.length)return false;e = L.elem[i - 1];return true;
}int LocateElem_one(SqList L, ElemType e) {//查询某元素的位置for (int i = 0; i < L.length; i++)if (L.elem[i] == e)return i + 1;return 0;
}int LocateElem_two(SqList L, ElemType e) {//查询某元素的位置int i = 0;while (i < L.length && L.elem[i] != e)i++;if (i < L.length)return i + 1;elsereturn 0;
}bool ListInsert(SqList &L, int i, ElemType e) {//插入元素if ( i < 1 || i > L.length + 1)return false;if (L.length == MAXSIZE)return false;for (int j = L.length - 1 ; j >= i - 1 ; j--) {L.elem[j + 1] = L.elem[j];}L.elem[i - 1] = e;L.length++;return true;
}bool ListDelete(SqList &L, int i) {//删除元素if (i < 1 || i > L.length)return false;for (int j = i; j <= L.length - 1; j++) {L.elem[j - 1] = L.elem[j];}L.length--;return true;
}bool CreateList(SqList &L, int n) {//创建顺序表for (int i = 0; i < n; i++) {cout << "第" << i + 1 << "个元素是:";cin >> L.elem[i];L.length++;}return true;
}void PrintList(SqList L) {//打印for (int i = 0; i < L.length; i++) {cout << "第" << i + 1 << "个元素是:" << L.elem[i] << endl;}
}void menu() {cout << "---------------------请输入:--------------------------" << endl;cout << "------------------------------------------------------" << endl;cout << "1--------------------创建顺序表-----------------------" << endl;cout << "2--------------------查询长度-------------------------" << endl;cout << "3--------------------插入元素-------------------------" << endl;cout << "4--------------------删除元素-------------------------" << endl;cout << "5--------------------查询某元素第一次出现的位置-------" << endl;cout << "6--------------------查询某位置的元素-----------------" << endl;cout << "7--------------------清空顺序表-----------------------" << endl;cout << "8--------------------输入顺序表元素--------------------" << endl;cout << "9--------------------退出------------------------------" << endl;cout  << "------------------------------------------------------" << endl;
}int main() {SqList L;//创建顺序表InitList(L);//初始化int cnt;while (1) {menu();//菜单cin >> cnt;system("cls");//清空屏幕if (cnt == 1) {cout << "请输入元素的个数,然后依次输入元素" << endl;int n;cin >> n;if (CreateList(L, n)) {cout << "创建成功" << endl;}} else if (cnt == 2)cout << "当前顺序表长度为:" << GetLength(L) << endl;else if (cnt == 3) {cout << "请依次输入要插入的位置和元素" << endl;int pos;ElemType elem;cin >> pos >> elem;if (ListInsert(L, pos, elem)) {cout << "插入成功" << endl;}} else if (cnt == 4) {cout << "请输入要删除的元素位置" << endl;int pos;cin >> pos;if (ListDelete(L, pos)) {cout << "删除成功" << endl;}} else if (cnt == 5) {cout << "请输入要查询位置的元素" << endl;ElemType elem;cin >> elem;int pos = LocateElem_one(L, elem);if (pos == 0) {cout << "查询不到" << endl;} elsecout << "该元素的位置是" << pos << endl;} else if (cnt == 6) {ElemType elem;int pos;cout << "输入要查询的位置" << endl;cin >> pos;if (GetElem(L, pos, elem)) {cout << "该位置的元素为:" << elem << endl;} elsecout << "输入有误" << endl;} else if (cnt == 7) {if (ClearList(L))cout << "顺序表已清空" << endl;} else if (cnt == 8) {PrintList(L);} else if (cnt == 9) {return 0;}}return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/311726.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

排名前15位的Kubernetes监控和安全工具

Kubernetes推动了竞争力的提升。如今&#xff0c;作为一项成熟的技术&#xff0c;全球各地的企业都在迅速采用基于微服务的&#xff0c;容器驱动的方法来交付软件。Kubernetes是行业标准。行业领导者正在帮助它如雨后春笋般发展&#xff0c;基于Kubernetes核心开发综合应用程序…

word List 31

word List 31 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

什么是python语言的动态类型机制_理解Python的Dynamic typing

Python的Dynamic typing有些类似于C语言的指针&#xff0c;在C中&#xff0c;一个变量可以指向任何地址空间&#xff0c;在Python中&#xff0c;一个变量也可以指向任何type的数据对象。变量的指向可以在程序运行过程中变化&#xff0c;这就是我理解的Dynamic typing。 Python是…

Asp.Net Core IdentityServer4 管理面板集成

前言IdentityServer4&#xff08;以下简称 Id4&#xff09; 是 Asp.Net Core 中一个非常流行的 OpenId Connect 和 OAuth 2.0 框架&#xff0c;可以轻松集成到 Asp.Net Core 应用中&#xff0c;并且与 Asp.Net Core Identity 也可以轻松集成。博客园也有大佬发布了很多关于 Id4…

数据结构---递归实现十进制装换为任意进制

数据结构—递归实现十进制装换为任意进制 代码&#xff1a; #include <stdio.h> #include <stdlib.h> #include"stack.h" stack Stack; void toAnyDigit(int n, int d) {//十进制转化为d进制if (n 0) {//递归结束的条件return;}int temp n % d;push(…

c++ string 删除字符_字符串操作的全面总结(附完整代码)

字符串操作看似简单&#xff0c;其实非常重要&#xff0c;不注意的话&#xff0c;经常出现代码运行结果和自己想要的不一致&#xff0c;甚至崩溃。本文总结了一些构建string对象方法、修改string对象的方法、string类型的操作函数、string类型的查找、string对象的比较。1 构建…

给Hangfire的webjob增加callback和动态判断返回结果功能设计

背景介绍通常业务中需要用到定时执行功能&#xff0c;我用hangfire搭建了一个调度服务&#xff0c;这个调度服务是独立于业务逻辑的&#xff0c;具体可以参考文章&#xff1a;https://github.com/yuzd/Hangfire.HttpJob/wiki也就是说只要我有了这个调度服务后&#xff0c;只要提…

C++实现双向链表

#include <iostream> using namespace std; typedef int ElemType;typedef struct DuLNode {//节点的创建ElemType data;struct DuLNode *prior, *next; } DuLNode, *DuLinkList;bool InitList(DuLinkList &L) {//初始化L new DuLNode;if (L NULL) {cout << …

word List32

word List32 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

spring aop实例讲解_Spring框架核心知识点

文章内容输出来源&#xff1a;拉勾教育Java高薪训练营前言&#xff1a;由于工作需要提升自身技术能力&#xff0c;在各方比较下&#xff0c;报名了拉勾教育的java高薪训练营&#xff0c;目前已经学了半个月啦&#xff0c;来说说自身学习的感受吧&#xff1a;课程内容有广度更有…

大数据常用数据库汇总

通常数据库分为关系型数据库和非关系型数据库&#xff0c;关系型数据库的优势到现在也是无可替代的&#xff0c;比如MySQL、SQL Server、Oracle、DB2、SyBase、Informix、PostgreSQL以及比较小型的Access等等数据库&#xff0c;这些数据库支持复杂的SQL操作和事务机制&#xff…

C++实现顺序栈

#include <iostream> using namespace std; #define MAXSIZE 100 typedef ElemType int;typedef struct//顺序栈的表示 {ElemType *base;ElemType *top;int stacksize; }SqStack;bool InitStack(SqStack &S)//初始化 {S.base new ElemType[MAXSIZE];if (!s.base){co…

word List 33

word List 33 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

深入理解ASP.NET Core依赖注入

概述ASP.NET Core可以说是处处皆注入&#xff0c;本文从基础角度理解一下原生DI容器&#xff0c;及介绍下怎么使用并且如何替换官方提供的默认依赖注入容器。什么是依赖注入百度百科中对于依赖注入的定义&#xff1a;控制反转&#xff08;Inversion of Control&#xff0c;缩写…

python3.7和3.5_Ubuntu更新python3.5到python3.7

一 下载 wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1rc2.tgz 二 解压 tar zxvf Python-3.7.1rc2.tgz cd Python-3.7.1rc2 三 编译 ./configure make make install 先找的python3.7解释器位置&#xff0c;一般是 /usr/local/bin/python3.7 四 删除原来的软连接 …

word List 34

word List 34 如果存在什么问题&#xff0c;欢迎批评指正&#xff01;谢谢&#xff01;

redis api 中文文档_我的Redis学习资料库

最近经常有人问我&#xff0c;我这边学习Redis都有哪些资料&#xff0c;能不能发他们一下。作为一个习惯”慢慢啃”技术学习的人&#xff0c;我确实积累了大量资料&#xff0c;这里可以介绍给大家。注明&#xff1a;本文提供的书籍、视频、源码、文档等&#xff0c;都是非盈利性…

前后端分离架构一直没机会实战?1周完成Vue+Core WebApi移动商城实战(含源码)!...

疫情让企业受到重创&#xff01;就业形势更加严峻&#xff01;前后端分离架构成了当下最高频的招聘需求还没实战过前后端分离&#xff1f;花3分钟阅读本文&#xff0c;带你全面了解前后端分离&#xff0c;轻松面试拿高薪&#xff01;Web发展至今技术非常成熟&#xff0c;主流有…

算法---宝藏最优选择问题

贪心算法—宝藏最优选择问题 原理参考趣学算法 代码&#xff1a; #include"quickSort1.h" 快速排序代码 int quickSort1(int a[], int l, int h) {//快速排序int i l, j h, p a[l];while (i < j) {while (i<j&&a[j]>p) {//从右往左遍历查找比…

C++实现循环队列

#include <iostream> using namespace std; #define MAXSIZE 100 typedef int ElemType;typedef struct {//队列的创建ElemType *base;int front;int rear; } SqQueue;bool InitQueue(SqQueue &Q) {//队列初始化Q.base new ElemType[MAXSIZE];if (!Q.base) {cout &l…