文章目录

  • 目的
  • 内容
  • 二、详细代码
  • 运行结果

目的

领会顺序表存储结构和掌握顺序表中各种基本运算算法设计。


内容

编写一个程序sqlist.cpp,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型ElemType为char),并在此基础上设计一个主程序,完成如下功能:
初始化顺序表L
依次插入a,b,c,d,e元素
输出顺序表L
输出顺序表L长度
判断顺序表是否为空
输出顺序表L的第3个元素
输出元素a的位置
在第4个元素位置上插入f元素
输出顺序表L
删除顺序表L的第3个元素
输出顺序表L
释放顺序表L

二、详细代码

代码如下:

#include<stdio.h>
#include<malloc.h>
#define MaxSize 50
typedef char ElemType;
typedef struct SqList {ElemType data[MaxSize];int length;
}SqList;void InitList(SqList*& L) {//初始化线性表L = (SqList*)malloc(sizeof(SqList));L->length = 0;
}
void DestroyList(SqList*& L) {//销毁线性表free(L);
}
bool ListEmpty(SqList* L) {//判断线性表是否为空表return (L->length == 0);//通过L->length判断,length为0的时候,即是空表
}
int ListLength(SqList* L) {//求线性表的长度return (L->length);//直接返回length即可
}
bool GetElem(SqList* L, int i, ElemType e) {//求线性表中第i个元素值i--;if (i<0 || i>L->length - 1) {//判断数据合法性return false;//}else {//若合法,则输出e = L->data[i];return true;}
}
void DispList(SqList* L) {//输出线性表for (int i = 0; i < L->length; i++) {//利用循环遍历数组,逐一输出数组元素printf("%c", L->data[i]);}printf("\n");
}
int LocateElem(SqList* L, ElemType e) {//查找第一个值域为e的元素序号for (int i = 0; i < L->length; i++) {if (e == L->data[i]) {return i+1;}}return 0;
}
bool InsertElem(SqList*& L, int i, ElemType e) {//插入第i个元素int j;if (i<1 || i>L->length + 1 || L->length == MaxSize) {//对插入位置进行判断,插入位置要在表中,且表的长度与MaxSize不可相等,不然插入后数据会溢出return false;}i--;//将i从元素位置转换成数组下标for (j = L->length; j > i;j--) {//将插入元素后面的元素往后移动一个位置L->data[j] = L->data[j - 1];}L->data[i] = e;L->length++;return true;
}
bool ListDelete(SqList*& L, int i, ElemType e) {//删除第i个元素int j;if (i<1 || i>L->length) {return false;}i--;e = L->data[i];for (j = i; j < L->length - 1; j++) {L->data[j] = L->data[j + 1];}L->length--;return true;
}
//到此为止,我们已经将可能用到的函数定义完毕
//下面基本只需调用以上函数即可
int main() {SqList* L;ElemType e = 0;printf("顺序表的基本运算如下");printf("(1)初始化顺序表L\n");InitList(L);printf("(2)依次插入a,b,c,d,e元素\n");InsertElem(L, 1, 'a');InsertElem(L, 2, 'b');InsertElem(L, 3, 'c');InsertElem(L, 4, 'd');InsertElem(L, 5, 'e');printf("(3)输出顺序表L:\n");DispList(L);printf("(4)顺序表L长度:%d\n",ListLength(L));printf("(5)顺序表L为%s\n", ListEmpty(L));GetElem(L, 3, e);printf("(6)顺序表L的第3个元素:%c\n",e);printf("(7)元素a的位置:%d\n",LocateElem(L,'a'));printf("(8)在第四给元素位置上插入f元素\n");InsertElem(L, 4, 'f');printf("(9)输出顺序表L:\n");DispList(L);printf("(10)删除L的第3个元素\n");ListDelete(L, 3, e);printf("(11)输出顺序表L:\n");DispList(L);printf("(12)释放顺序表L\n");DestroyList(L);return 1;}

运行结果

如下

【数据结构】:实现顺序表各种基本运算的算法相关推荐

  1. 实验题一(实现顺序表各种基本运算的算法)

    目的:领会顺序表存储结构和掌握顺序表中各种基本运算算法设计. 内容:编写一个.cpp的程序,实现顺序表的各种基本运算和整体建表算法(假设顺序表的元素类型为 Elemtype char),并在此基础上设 ...

  2. 实现顺序表各种基本运算的算法

    编写一个头文件SqList.h,实现顺序表的各种基本操作,并在此基础上设计一个主程序(exp2_1.cpp)完成如下功能: 初始化顺序表L 依次采用尾插法插入a,b,c,d,e元素 输出顺序表L 输出 ...

  3. 【数据结构】顺序表的应用(4)(C语言)

    [数据结构]顺序表的应用(1)(C语言) [数据结构]顺序表的应用(2)(C语言) [数据结构]顺序表的应用(3)(C语言) 设计一个算法,将一个顺序表倒置,即如果顺序表各个节点值存储在一维数组a中, ...

  4. 【数据结构】顺序表的应用(3)(C语言)

    问题: 已知一个顺序表中的各节点值是从大到小有序的,设计一个算法,插入一个值为x的节点,使顺序表中的节点仍然是从小到大有序的. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #includ ...

  5. 【数据结构】顺序表的应用(2)(C语言)

    问题: 2.有顺序表A和B,其元素均按从小到大的升序排列,编写一个算法,将它们合并成一个顺序表C,要求C的元素也按从小到大的升序排列. 头文件与该头文件一样:[数据结构]顺序表的实现(C语言) #in ...

  6. 第3周实践项目1 顺序表的基本运算

    /*copyright (t) 2017,烟台大学计算机学院 *All rights reserved. *文件名称:1.cpp *作者:邵雪源 *完成日期:2017年9月19日 *版本号:v1.0 ...

  7. 数据结构25 ————顺序表查找

    数据结构25 ----顺序表查找 一. 目录 文章目录 数据结构25 ----顺序表查找 一. 目录 二. 顺序表查找 三. 顺序表查找代码 1.基本算法 2.进行优化 四. 参考资料 二. 顺序表查 ...

  8. 【数据结构】顺序表的应用(1)(C语言)

    问题: 1.将顺序表(a1,a2,-,an)重新排列以a1为界的两部分:a1前面的值均比a1小,a1后面的值均比a1大(这里假设数据元素的类型具有可比性,不妨设为整型). 头文件与该头文件一样:[数据 ...

  9. 数据结构 创建顺序表

    3.18数据结构--创建顺序表 运行结果截图: #define _CRT_SECURE_NO_WARNINGS #define MAXSIZE 100 #include<stdio.h> ...

最新文章

  1. 2019最具特色的web前端技术分享
  2. aitken插值方法的c++代码_无人驾驶路径规划技术-三次样条插值曲线及Python代码实现...
  3. 分布式服务框架 Zookeeper -- 管理分布式环境中的数据--转载
  4. linux的命令窗口,(翻译)Linux命令行(二)
  5. STM32F7xx —— CAN通信
  6. think php 3.2.3 环境,ThinkPHP 3.2.3 入口文件配置
  7. mysql数据库undo日志恢复_MySQL的undo/redo日志和binlog日志,以及2PC
  8. 【大数据部落】用R挖掘Twitter数据
  9. Win7性能优化:解决多核处理器兼容问题
  10. 基于javaweb+springboot的在线购书系统网上书店图书商城(前台、后台)(java+Springboot+ssm+mysql+maven)
  11. 火星开发板_数据科学家来自火星,软件开发人员来自金星
  12. Ubuntu 16.04 RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller” 不能上网
  13. 1068. Find More Coins (30)搜索题
  14. MT6573 1048MP 版本发布(笔记)
  15. 【用Java模拟KTV点歌系统】
  16. 个人所得税分几个等级
  17. Frament与activity切换
  18. 微软skype收购案
  19. 2022年服务器行业研究报告
  20. linux mutt 收不到邮件,mutt 发邮件189邮件收不到邮件内容的解决办法

热门文章

  1. 【web初步】浮动(float)
  2. 基于 NGINX 的 WAF 配置方法之ModSecurity
  3. 模拟器运行错误: invalid device state
  4. iOS本地推送实现备忘录闹铃提醒
  5. 我想请问在中国一级和二级硕士点它们有什么区别?所以我可不可以这样理解,一级硕士点获得的是学术学位,二级硕士学位获得的是专业学位请问为什么accountable不是可以数清的意思,而是有责任心
  6. 中文编码为英文方式:
  7. 蔬菜配送小程序开发功能包含什么
  8. 00.Docker 搭建本地ChatGPT,后端优化,绕过 Cloudflare,速度喜人。
  9. 最新传智播客黑马前端从基础班到就业班(视频+资料)
  10. IE退役,Edge接棒,成为Windows 10和Windows 11默认浏览器