#include<iostream>
#include<fstream> using namespace std;
#define MAXLEN 100 //定义顺序表
struct Sqlist {
int *elem;
int length;
};
//初始化顺序表
void InitList(Sqlist &L) {
L.elem = new int[MAXLEN];
if (!L.elem) exit(OVERFLOW);
L.length = 0;
}
//顺序表的取值 i代表取第几位 0代表索引输入错误
int GetElem(Sqlist L, int i) {
if (i<1 || i>L.length) return 0;
return L.elem[i - 1];
} //顺序表的查找 e为需查找的值 返回值为0代表无
int LocateElem(Sqlist L, int e) {
//遍历顺序表L,查找值为e的元素返回序号
for (int i = 0; i < L.length; i++) {
if (L.elem[i] == e) return ++i;
}
return 0;
}
//顺序表的插入 i为插入的位置 e为插入的值
bool ListInsert(Sqlist& L, int i, int e) {
if (i<1 || i>L.length+1) return false;
if (L.length == MAXLEN) 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;
}
//顺序表的删除 i为删除位置
bool ListDelete(Sqlist& L, int i) {
if (i<1 || i>L.length) return false;
for (int j = i; j <= L.length; j++) {
L.elem[j - 1] = L.elem[j];
}
--L.length;
return true;
} //顺序表的输入
void ListInput(Sqlist &L) {
int length=0;
cout << "请输入顺序表的长度:";
cin >> L.length;
for (int i = 0; i < L.length; i++) {
cout << "请输入第" << i+1 << "个值:";
cin >> L.elem[i];
}
} //顺序表的输出
void ListOutput(Sqlist &L) {
cout << "顺序表的值依次为:";
for (int i = 0; i < L.length; i++) {
cout << L.elem[i] << "\t";
}
cout << endl;
} int main() {
int opearateNum = 0;//操作值
Sqlist LA;
//初始化
InitList(LA); while (true)
{
int selectIndex=0;//增删查所用的索引
int selectValue=0;//增查所用的值 cout << "1、输入顺序表\t2、输出顺序表\t3、取值\t4、查值\t5、插入\t6、删除\t7、退出" << endl;
cin >> opearateNum;
if (opearateNum == 7)
break;
switch (opearateNum)
{
case 1:
//数据输入
ListInput(LA);
system("pause");
system("cls");
break;
case 2:
//输出顺序表
ListOutput(LA);
system("pause");
system("cls");
break;
case 3: cout << "输入要取第几位:";
cin >> selectIndex;
if (GetElem(LA, selectIndex) == 0)
cout << "没有第" << selectIndex << "位的值" << endl;
else
cout << "第" << selectIndex << "位的值:" << GetElem(LA, selectIndex) << endl;
system("pause");
system("cls");
break;
case 4:
cout << "输入要查找的值:";
cin >> selectValue;
if (LocateElem(LA, selectValue) == 0)
cout << "没有该值!"<< endl;
else
cout << "值位" << selectValue << "的索引:" << LocateElem(LA, selectValue) << endl;
system("pause");
system("cls");
break;
case 5:
cout << "输入要插入的位置和值(如:第2位插入值为4,输入:2 4):";
cin >> selectIndex >> selectValue;
if (ListInsert(LA, selectIndex, selectValue))
cout << "插入成功!" << endl;
else
cout << "插入失败!" << endl; system("pause");
system("cls");
break;
case 6:
cout << "输入要删除第几位:";
cin >> selectIndex;
if (ListDelete(LA, selectIndex))
cout << "删除成功!" << endl;
else
cout << "删除失败!" << endl;
system("pause");
system("cls");
break;
case 7:
break;
default:
cout << "无效操作,请重新输入!"<<endl;
break;
} } }

  

C++学习---顺序表的构建及操作的更多相关文章

  1. c数据结构 顺序表和链表 相关操作

    编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...

  2. C++实现顺序表的14种操作

    C++顺序表的操作 2017-12-27 // 顺序表.cpp: 定义控制台应用程序的入口点. //Author:kgvito YinZongYao //Date: 2017.12.27 #inclu ...

  3. C++学习---单链表的构建及操作

    #include <iostream> using namespace std; typedef struct LinkNode { int elem;//节点中的数据 struct Li ...

  4. hive学习笔记——表的基本的操作

    1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...

  5. ios学习顺序表

  6. c语言实现--顺序表操作

    经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1;线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2;采用的实现方式:一段地址连 ...

  7. C#顺序表(数据结构)

    xmfdsh我近来心情实在不好,只因为这两天课比较少,然后一下子时间太多,不知道干什么,心情郁闷......这是要闹哪样?这都让我一个郁闷了一个晚上.闲来无聊,回顾下之前学的C#数据结构,数据结构的重 ...

  8. 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表

    在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...

  9. 数据结构中的顺序表和链表(Python语言)

    转载:https://blog.csdn.net/weixin_43187669/article/details/96426362 算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体. ...

随机推荐

  1. JVM七大垃圾回收器下篇G1(Garbage First)

    G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC?  原因就在于应用程序所应对的业务越来越庞大.复杂,用户越来越多,没有GC就不能保 ...

  2. VS2017报错:未识别符vector

    解决办法:添加头文件#include<vector>,添加命名空间 using namespace std.

  3. element-ui upload上传文件并携带参数 使用formData对象

    需求:上传文件的时候,需要携带其他的参数 问题:使用upload上传文件时,必须使用formData对象,而其他的参数通过data获取的到的,formData和data是不能同时传输的 解决:获取到的 ...

  4. Python接口自动化测试01

    1)环境准备: 接口测试的方式有很多,比如可以用工具(jmeter,postman)之类,也可以自己写代码进行接口测试,工具的使用相对来说都比较简单,重点是要搞清楚项目接口的协议是什么,然后有针对性的 ...

  5. C++实现将一个文件夹内容拷贝至另一个文件夹

    Windows提供了非常好用的方法SHFileOperation,而且功能强大, 不光可以拷贝,还有移动.删除等等操作.直接上代码: 1 void CopyFolder(TCHAR* srcFolde ...

  6. spring in action-note-2

    1.AOP:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是 ...

  7. 我给VSCode报了个bug,微软工程师竟然凌晨回复了...

    柠檬哥整理了50本计算机相关的电子书,关注公众号「后端技术学堂」,回复「1024」即可获取,回复「进群」拉你进读者技术交流群. 本文首发个人微信公众号,欢迎围观点击阅读原文 最近遇到一个有意思的bug ...

  8. Java学习day04

    day04-课堂笔记 1.运算符[剩下的运算符] * 赋值运算符 两种类型: 基本赋值运算符:= 扩展的赋值运算符: += -= *= /= %= 它们都是先执行等号右边的表达式,最后再经过运算赋值给 ...

  9. Java知识系统回顾整理01基础02面向对象03方法

    一.根据实例给出"方法"的定义 在LOL中,一个英雄可以做很多事情,比如超神,超鬼,坑队友 能做什么在类里面就叫做方法 比如队友残血正在逃跑,你过去把路给别人挡住了,导致他被杀掉. ...

  10. Matlab2016b安装流程

    来源:https://jingyan.baidu.com/article/59703552da12ab8fc007402b.html Matlab2016b安装教程 听语音 原创 | 浏览:34338 ...