文章目录

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

目的

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


内容

编写一个程序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. 基于verilog的FPGA编程经验总结(XILINX ISE工具)
  2. 以面向对象的思想实现数据表的添加和查询,JDBC代码超详细
  3. Linux 命令行界面-GUI界面
  4. JS判断是否出现滚动条
  5. 获取Matlab 30天在线试用版本
  6. 彻底解决windows2003不能共享文件夹或者共享后不能访问的问题
  7. 面向过程分析与面向对象分析之间的区别
  8. Leetcode389
  9. python里如何计算大文件的md5
  10. Java 算法 旅行家的预算
  11. 单页面应用的路由问题
  12. 判断经纬度是否在一范围内
  13. 二逼青年暑假深圳面试记
  14. 华三防火墙三层逻辑子接口对接华三交换机
  15. MAVEN5分钟入门
  16. 1-交通数据的获取系列学习
  17. nyist 三点顺序
  18. 白帽子黑客与网络安全工程师带你:远程桌面漏洞利用与Windows7计算机攻防实战
  19. iPhone4S安装Linux系统,Ubuntu系统下iPhone4S降级6.1.3教程
  20. 一款交友APP,聊天交友,视频交友,语音交友,直播交友,同城交友,一对一交友,一对一视频聊天,1v1同城交友,1v1交友,付费交友,相亲交友,陌生人交友源码

热门文章

  1. 【初三】一个程序猿的新年愿望
  2. 快来直播:物联网在电子商务行业中的重要性
  3. Mark文档操作(一):CSDN默认MarkDown编辑器提示
  4. 2021年最新的服务器系统,微软为2021年下半年准备Windows Server LTSC的下一个版本
  5. 大家好,我叫5G NR(转)
  6. Java方法返回值类型归纳
  7. Android图片加载框架——Glide(Glide v4)
  8. 华为云之RDS云数据库的管理使用与快速入门
  9. php 加减速 操作,JS实现匀加速与匀减速运动的代码分享
  10. 手把手教你语音识别(二)