C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能

以下代码主要严蔚参考敏主编的《数据结构》(C语言)编写

//线性顺序表
#include <iostream>
#define MAX_INTT_LIST 100
#define Elemtype int
#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0
typedef int Status;using namespace std;
typedef struct List
{Elemtype *Elem;int Length;int Listsize;};
Status InitList( List &L) //初始化一个线性表;
{L.Elem=new Elemtype[MAX_INTT_LIST];if(!L.Elem){return ERROR;}else{L.Length=0;L.Listsize=MAX_INTT_LIST ;return OK;}
}
void DestoryList(List &L)//销毁一个线性表
{delete[] L.Elem;L.Length=0;L.Listsize=0;
}
void ClearList(List &L)//清空一个线性表
{L.Length=0;
}
int ListLength(List L)//返回线性表的长度
{return L.Length;
}
Status GetElem (List L,int i, Elemtype &e)//用e返回线性表L中第i个数据元素的值
{if(i>ListLength(L)||i<0){return FALSE;}else{e=L.Elem[i];return TRUE;}}
Status ListEmpty(List L)//查看线性表L是否为空
{if(L.Length==0)return TRUE;elsereturn FALSE;
}
Status compare(Elemtype a,Elemtype b)
{if(a==b)return TRUE;elsereturn FALSE;
}
int LocateElem(List L, Elemtype e,Status (*compare)(Elemtype a,Elemtype b))//返回线性表中第一个与e满足compare()关系的数据元素的位序
{int i=1;while(i<=L.Length&&!(*compare)(L.Elem[i],e))i++;if(i<=L.Length)return i;elsereturn 0;
}
void PriorElem(List L, Elemtype cur_e, Elemtype &pre_e)//在线性表L中求数据元素cur_e的前驱
{for(int i=1; i<=L.Length; i++){if(L.Elem[i]==cur_e&&i!=1){pre_e=L.Elem[i-1];break;}}}
void NextElem(List L,Elemtype cur_e,Elemtype &next_e)//在线性表L中求数据元素cur_e的后继
{for(int i=1; i<=L.Length; i++){if(L.Elem[i]==cur_e&&i!=L.Length){next_e=L.Elem[i+1];break;}}
}
void ListInsert(List &L,int i,Elemtype e)//在线性表L中插入一个新的元素
{if(i<=L.Length+1&&i>=1){for(int k=L.Length+1; k>i; k--){L.Elem[k]=L.Elem[k-1];}L.Elem[i]=e;L.Length++;}
}
void ListDelete(List &L,int i,Elemtype &e)//在线性表L中删除第i个数据元素
{if(i<=L.Length&&i>=1&&!ListEmpty(L)){e=L.Elem[i];for(int k=i; k<=L.Length; k++){L.Elem[k]=L.Elem[k+1];}L.Length--;}
}Elemtype visit(List L,int i)
{if(L.Elem[i]!=NULL)return L.Elem[i];elsereturn FALSE;
}
Elemtype ListTraverse(List L,Elemtype (*vist)(List L,int i))//遍历线性表
{for(int i=1; i<=L.Length; i++){if(vist(L,i))return L.Elem[i];elsereturn FALSE;}
}
int main()
{List L;int e=0;Elemtype pre_e=0,next_e=0;InitList(L);cout<<ListEmpty(L)<<endl;ListInsert(L,1,6);ListInsert(L,2,7);ListInsert(L,3,8);for(int i=1; i<=L.Length; i++){cout<<L.Elem[i]<<" ";}cout<<endl;GetElem(L,2,e);cout<<e<<endl;PriorElem(L,7,pre_e);cout<<pre_e<<endl;NextElem(L,7,next_e);cout<<next_e<<endl;cout<<LocateElem(L,8,(*compare))<<endl;ListDelete(L,3,e);cout<<e<<endl;for(int i=1; i<=L.Length; i++){cout<<L.Elem[i]<<" ";}cout<<endl;}

最近在提前预习数据结构这门课,在阅读严蔚敏的《数据结构》时发现书上的这一部分并未给出详细代码,于是在这里写下自己写的代码,希望能够给同样学习这方面知识的小伙伴一点参考。
若以上代码有任何错误或可以改进的地方欢迎在评论区指出并讨论。
感谢你的阅读。

C++实现线性顺序表的初始化,插入,删除,销毁,清空等功能相关推荐

  1. 静态顺序表创建,初始化,插入,删除,查找

    #include<stdlib.h> #define MaxSize 20 typedef struct {int data[MaxSize];int length; }sqlist; / ...

  2. 1-2、数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化

    学习需要记录,更需要温习! 上一篇我们总结了什么是线性表,线性表的ADT类型,线性表的两种存储类型顺序存储结构和链式存储结构,今天正式进入线性表的顺序存储结构的总结和归纳,也就是数据结构的线性表的顺序 ...

  3. C语言-数据结构-可变长顺序表的初始化,插入和输出

    问题描述: 实现可变长顺序表的建表过程.任务要求:通过顺序表的初始化.插入算法,实现顺序表的建表,并依次输出顺序表元素. [输入形式] 第一行输入整数N(1<=N<=100),表示创建长度 ...

  4. java实现线性顺序表

    2019独角兽企业重金招聘Python工程师标准>>> /*** * 线性顺序表*/ public class SequentialLinearList {private char[ ...

  5. python数据结构之线性顺序表

    线性表(linear list)是数据结构的一种,一个线性表是n个具有相同特性的数据元素的有限序列.本文结合了互联网上的一些代码,以及结合百度百科关于线性顺序表的定义,实现了全部代码. 在稍复杂的线性 ...

  6. c语言线性顺序表,C语言程序——线性顺序表.doc

    C语言程序--线性顺序表.doc 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文 ...

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

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

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

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

  9. c语言:【顺序表】静态顺序表的初始化、打印、尾插、尾删

    #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #include<asser ...

最新文章

  1. IOS和Andriod手机浏览器内核
  2. Unity设置AppIcon方法
  3. ajax get请求_JSP中的对讲机Ajax简述
  4. lda主题词评论python_Python之酒店评论主题提取LDA主题模型
  5. windows 自动copy远程服务器文件
  6. Android 4.0操作系统的20个使用小技巧
  7. 在Spring项目中集成使用MongoDB
  8. python 勒索病毒 源码_python生成的exe被360识别为勒索病毒原因及解决方法
  9. cnblogs今天开通了!
  10. Notepad++ 配置java编译环境
  11. 12.2.PHP7.1 狐教程-偶遇 -【PHP 入口】
  12. linux下cmake安装配置
  13. 深度学习入门必看-手写数字识别
  14. Redis面试题及答案 2021最新版 140道
  15. 2021年中国上牌和驾驶员数量分析:新注册登记机动车3674万辆 新领证驾驶人2750万人[图]
  16. 凯利讯分享ECL电路与TTL电路的使用注意事项
  17. windows 10 宽带拨号时无法开启热点,解决热点开启问题
  18. 阿里p7 p8的要求看看你会了多少
  19. R及Rstudio下载安装教程
  20. Calendar 获取指定时间

热门文章

  1. Hadoop集群如何启动
  2. Add-appxpackage : Deployment failed with HRESULT: 0x80070005, 无法注册包。
  3. C语言能实现汇编语言的大部分功能,C语言并不能实现汇编语言的大部分功能
  4. python3GUI--200行代码写一个上课点名程序(附源码)
  5. DO-178B三种文本对照学习注记
  6. 记录一次爬虫接单项目【采集国际淘宝数据】
  7. MATLAB多项式函数拟合和曲线拟合
  8. 2018年中国电影总票房突破609亿这个惊心动魄的数字
  9. 2的2.8次方用计算机怎么算,2.8 计算器的使用(含答案)
  10. 没有管理经验,怎么当测试负责人?