C++学习---顺序表的构建及操作
#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++学习---顺序表的构建及操作的更多相关文章
- c数据结构 顺序表和链表 相关操作
编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include& ...
- C++实现顺序表的14种操作
C++顺序表的操作 2017-12-27 // 顺序表.cpp: 定义控制台应用程序的入口点. //Author:kgvito YinZongYao //Date: 2017.12.27 #inclu ...
- C++学习---单链表的构建及操作
#include <iostream> using namespace std; typedef struct LinkNode { int elem;//节点中的数据 struct Li ...
- hive学习笔记——表的基本的操作
1.hive的数据加载方式 1.1.load data 这中方式一般用于初始化的时候 load data [local] inpath '...' [overwrite] into table t1 ...
- ios学习顺序表
- c语言实现--顺序表操作
经过三天的时间终于把顺序表的操作实现搞定了.(主要是在测试部分停留了太长时间) 1;线性表顺序存储的概念:指的是在内存中用一段地址连续的存储单元依次存储线性表中的元素. 2;采用的实现方式:一段地址连 ...
- C#顺序表(数据结构)
xmfdsh我近来心情实在不好,只因为这两天课比较少,然后一下子时间太多,不知道干什么,心情郁闷......这是要闹哪样?这都让我一个郁闷了一个晚上.闲来无聊,回顾下之前学的C#数据结构,数据结构的重 ...
- 老郭带你学数据结构(C语言系列)1-线性表之静态顺序表
在学习之前,先说下我的软件情况,操作系统是manjaro linux 今天刚刚升级的,编辑器是vim8.0.55,编译器是gcc 6.2.1,调试器是gdb 7.12,版本再低点也可以,只要gcc版本 ...
- 数据结构中的顺序表和链表(Python语言)
转载:https://blog.csdn.net/weixin_43187669/article/details/96426362 算法是为了解决实际问题而设计的,数据结构是算法需要处理的问题载体. ...
随机推荐
- 一次MySQL索引失效引发的思考
最近公司做了一个千万数量级的项目,由于要求性能比较高,每一个相对慢的查询都需要优化,项目经理是一个比较有经验的开发人员,基本上遇到问题都会先自行处理:或自己分析原因或网络寻求帮助. 但是项目平稳运行一 ...
- ES6重度学习 demo实例
let 与 const // 并非真正的常量 // const 的本质: const 定义的变量并非常量,并非不可变, // 它定义了一个常量引用一个值.使用 const 定义的对象或者数组,其实是可 ...
- 虚拟机系列 | JVM运行时数据区
本文源码:GitHub·点这里 || GitEE·点这里 一.内存与线程 1.内存结构 内存是计算机的重要部件之一,它是外存与CPU进行沟通的桥梁,计算机中所有程序的运行都在内存中进行,内存性能的强弱 ...
- IntelliJ IDEA 2020.2 x64 最新破解教程有效期到2089年 完全免费分享
作者:极客小俊 一个专注于web技术的80后 我不用拼过聪明人,我只需要拼过那些懒人 我就一定会超越大部分人! CSDN@极客小俊,原创文章, B站技术分享 B站视频 : Bilibili.com 个 ...
- Laver 文件版本遍历器
系统简介 最近有个需求,需要罗列出各个目录中文件的信息,检索各类文件的最新版本.网上看了很多方式,但发现没有合适的.于是利用空余时间开始编写了一套文件遍历系统,如此便有了Laver(紫菜).Laver ...
- 破晓行动----带你总结JVM的知识大全(一)
JVM线程 + JVM内存区域
- Chrome使用video无法正常播放MP4视频的解决方案
H5的video标签让前端开发者用一行代码就可以实现视频和音频的播放,然而,有时候我们会突然发现,某些Mp4格式的视频在Chrome下居然无法正常播放?这究竟是什么原因呢?这篇文章主要分析了部分Mp4 ...
- 基于Scrapy的交互式漫画爬虫
Github项目地址 前言 该项目始于个人兴趣,本意为给无代码经验的朋友做到能开箱即用 阅读此文需要少量Scrapy,PyQt 知识,全文仅分享交流 摘要思路,如需可阅读源码,欢迎提 issue 一. ...
- 软件定义网络实验记录⑤--OpenFlow 协议分析和 OpenDaylight 安装
一.实验目的 回顾 JDK 安装配置,了解 OpenDaylight 控制的安装,以及 Mininet 如何连接: 通过抓包获取 OpenFlow 协议,验证 OpenFlow 协议和版本,了解协议内 ...
- Linux 串口工具 lsz lrz 移植
//之前写的,刚才不小心误删了,所以重新再发出来. 1 下载源码包 首先下载最新版的lrzsz,地址:https://ohse.de/uwe/software/lrzsz.html.下面以 0.12. ...