#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;
}

C++ struct实现顺序表相关推荐

  1. step3 . day1 数据结构之线性表顺序表

    大学没有选修数据结构,只是在C语言书最后提到过几种数据的 组织形式,也算眼熟,今天学的顺序表感觉还是很容易理解,写了一个有史以来代码最长.调试时间最短的代码,甚是感觉提高了不少,贴上Mark一下,写注 ...

  2. PTA 顺序表的基本操作

    原题有50分,这个答案有45分,欢迎指出不足 ;) 6-2 顺序表基本操作 (50 分) 实现顺序表的基本操作,如初始化.插入.删除.输出等. 注意:顺序表中可有重复元素值. 要求:写出三个基本操作函 ...

  3. 03-A. DS顺序表--结构体实现

    实验03-顺序表- 题目描述 实现顺序表的用C语言和结构体实现顺序表 属性包括:数组.实际长度.最大长度(设定为1000) 操作包括:创建.插入.删除.查找 输入 第1行先输入n表示有n个数据,即n是 ...

  4. 数据结构(07)— 线性顺序表基本操作

    1. 顺序表结构 #define MaxLen 50typedef struct {int data[MaxLen]; // 定义一个数组来存储线性表中所有元素int len; // 存储线性表的长度 ...

  5. 数据结构(04)— 线性顺序表实战

    1. 设计思路 本实战的实质是完成对学生成绩信息的建立.查找.插入.修改.删除等功能,可以首先定义项目的数据结构,然后将每个功能写成一个函数来完成对数据的操作,最后完成主函数以验证各个函数功能并得出运 ...

  6. 删除顺序表中所有的的重复数据

    顺序表的结果设计如下所示 顺序表的结构体设计和头节点的结构体设计如下链接: 顺序表的插入_神厨小福贵!的博客-CSDN博客按位置插入我们知道 顺序表的特点就是 无论在逻辑上还是地址上都是连续的先看顺序 ...

  7. 顺序表的删除(按位置删、头删、尾删)

    顺序表的结构体设计: #define MAXSIZE 10 //顺序表一般固定大小 struct SeqList {int data[MAXSIZE];int capacity: //顺序表容量大小i ...

  8. 数据结构与算法(2-1)线性表之顺序存储(顺序表)

    顺序表用数组存储数据元素(可以是结构体数组,也可以是结构体内的元素数组),插入和删除等等也是类似数组的操作. 顺序表优势: 1.无须为表示表中元素之间的逻辑关系而增加额外的存储关系,就是直接的顺序: ...

  9. 顺序表应用6:有序顺序表查询

    顺序表应用6:有序顺序表查询 Time Limit: 7MS Memory Limit: 700KB Submit Statistic Problem Description 顺序表内按照由小到大的次 ...

最新文章

  1. sql2008表结构查看_【赵强老师】Oracle数据库的存储结构
  2. AJAX俺也不会,是真的,不过,以后就会了
  3. Kubernetes 网络概念及策略控制(叶磊)
  4. 一件事情没弄清楚,十有八九做不好
  5. Entrust是一种为Laravel5添加基于角色的权限的简洁而灵活的方法。
  6. 知识星球限时优惠活动,速进!
  7. 基于java的药品管理系统_基于Java药品管理系统
  8. 如何用AD打开PADS的PCB文件?
  9. 【转载】Unity3D导入FBX模型的相关属性介绍
  10. 江苏高中考计算机,【江苏985录取率】_各省高考985录取率排名,江苏最让人“心疼”,倒数第二...
  11. 简单介绍一下ODI的几个基本概念
  12. border-image
  13. DELL 电脑 重装系统出现 no boottable devices found
  14. HDF5 header version 1.10.4与HDF5 library 1.10.5冲突解决办法记录
  15. 停车场车辆计数案例---以西门子1200PLC演示
  16. 华为、惠普、 戴尔、浪潮 服务器命名规则和型号分类
  17. FIPS 140-3与140-2的差异-1
  18. 【SQL】leetcode 584.寻找用户推荐人(知识点:SQL的三值逻辑)
  19. g4600黑苹果efi_黑苹果硬盘引导的两种方式
  20. 探讨一下局部空间下位置和旋转矩阵

热门文章

  1. ArcGIS10.6中,在3D分析工具中创建视线之后,怎么将其删除?
  2. ArcGIS实验教程——实验六:空间数据格式转换
  3. 趣学算法之斐波拉契数列实现
  4. 字符串之找到字符串的最大无重复字符串子串
  5. Android之线程池
  6. Hibernate之悲观锁与乐观锁
  7. 《零基础看得懂的C语言入门教程 》——(六)轻轻松松了解C语言的逻辑运算
  8. 直方图python高度_python – 子图中直方图的动画
  9. matlab机械臂工作空间代码_【ROS-Moveit!】机械臂控制探索(3)——基于python的API示例代码分析...
  10. 谈谈女友卸妆后的感受?