【数据结构基础】-线性表的顺序实现(数组实现)基本操作

2019.10.10
【数据结构-线性表的顺序结构】

基本操作:初始化,判断是否空表,清空表,获取表中的第i个元素,查找元素,插入元素,删除元素,获取表的元素个数。

抽象数据类型:
数据结构-线性表的顺序结构的抽象数据类型

#include <stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>//数据结构-线性表的顺序表示和实现#define TRUE 1
#define FALSE 0
#define OK 1
#define ERROR 0#define MAXSIZE 100  //定义线性表的最大长度typedef  int Status;	//Status是函数的类型,其值是函数的结果状态码
typedef int ElemType;	//顺序表存储元素类型,考虑到可移植性,若改变存储类型,只需要修改这一处,默认为int类型typedef struct MyStruct
{ElemType data[MAXSIZE];	//存储空间地址int length;		//当前长度
}List;//初始化操作,建立一个空的线性表
Status InitList(List &L);//打印线性表的所有元素
void PrintList(List L);//若线性表为空,则返回true,否则返回false
bool ListEmpty(List L);//将线性表清空
Status ClearList(List &L);//将线性表中地i个元素值返回给e
ElemType GetElem(List L, ElemType i, ElemType *e);//在线性表中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败
int LocateElem(List L, ElemType e);//在线性表第i个位置插入新元素e
bool InsertList(List &L, ElemType i, ElemType e);//删除线性表中第i个元素,并用e返回其值
Status ListDelete(List &L, ElemType i, ElemType &e);//返回线性表L的元素的个数
int ListLength(List L);int main() {List list1, list2;//初始化ListInitList(list1);//判断list是否为空if (ListEmpty(list1)){printf("该线性表为空\n");}else {printf("该线性表不为空\n");}//给线性表插入元素printf("给线性表插入元素...");InsertList(list1, 1, 1);InsertList(list1, 2, 2);InsertList(list1, 3, 3);//打印线性表中的元素PrintList(list1);//查找1在线性表中的序号printf("整数1在线性表中的序号: %d\n", LocateElem(list1, 1));//返回线性表中的元素个数printf("list1线性表中元素个数为:%d\n", ListLength(list1));//删除线性表中的元素int num;ListDelete(list1, 1, num);//打印线性表中的元素PrintList(list1);//返回线性表中的元素个数printf("list1线性表中元素个数为:%d\n", ListLength(list1));system("pause");return 0;
}//初始化操作,建立一个空的线性表
Status InitList(List &L) {L.length = 0;return OK;
}//打印线性表的所有元素
void PrintList(List L){if (L.data == NULL) {exit(0);}printf("该线性表的元素为: ");for (int i = 0; i < L.length ; i++){printf("%d ", L.data[i]);}printf("\n");
}//若线性表为空,则返回true,否则返回false
bool ListEmpty(List L){if (L.data == NULL){return false;}else{return true;}
}//将线性表清空
Status ClearList(List &L){if (L.data != NULL){free(L.data);}return OK;
}//将线性表中地i个元素值返回给e
ElemType GetElem(List L, ElemType i, ElemType *e){if (i<0 && i>L.length){	//输入的i有误return ERROR;}*e = L.data[i - 1];return OK;
}//在线性表中查找与给定值e相等的元素,如果查找成功,返回该元素在表中的序号表示成功;否则,返回0表示失败
int LocateElem(List L, ElemType e){for (int i = 0; i < L.length; i++){if (L.data[i] == e) {return i + 1;		//注意:返回的是该元素在线性表的序号,并非下标!}else{return 0;}}
}//在线性表第i个位置插入新元素e
bool InsertList(List &L, int i, ElemType e)
{if (i<1 || i>L.length + 1)		//判断i的范围是否有效{printf("位置无效!\n");return false;}if (L.length >= MAXSIZE)		//当前存储空间已满,不能插入{printf("当前存储空间已满!!!\n");return false;}//表中最后一个元素的下标是length-1,再后一位是length			for (int j = L.length; j >= i; j--)L.data[j] = L.data[j - 1];L.data[i - 1] = e;				//在位置i处放入eL.length++;					//线性表长度加1return true;
}//删除线性表中第i个元素,并用e返回其值
Status ListDelete(List &L, ElemType i, ElemType &e){if (i<0 || i>L.length){		//输入的序号错误!return ERROR;}e = L.data[i - 1];		//将被删除的元素赋值给e,通过e返回其值for (int j = i; j <= L.length - 1; j++) {L.data[j - 1] = L.data[j];}L.length--;return OK;
}//返回线性表L的元素的个数
int ListLength(List L){return L.length;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/483077.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

机器学习驱动技术是生物学进步的下一个突破

来源&#xff1a;ScienceAI作者&#xff1a;Immunai 联合创始人兼 CEO&#xff0c;Luis Voloch编译&#xff1a;绿萝数字生物学与 90 年代的互联网处于同一发展阶段&#xff08;早期、激动人心和变革性&#xff09;。当时&#xff0c;IP 地址的概念还很新&#xff0c;「精通技术…

实现调用API接口

API是一组封装好的函数&#xff0c;通过API&#xff0c;你可以为应用快速扩展功能&#xff0c;而无需理解它们是如何实现的&#xff0c;从而提升开发效率。通常&#xff0c;API服务商会提供API文档&#xff0c;那么如何根据文档来使用API呢&#xff1f; PS:该文章内容来自于阿里…

量子力学与机器学习相结合,预测高温下的化学反应

来源&#xff1a;ScienceAI编辑&#xff1a;凯霞在高温下从氧化物中提取金属不仅对于钢铁等金属的生产至关重要&#xff0c;而且对回收利用也必不可少。但当前的提取过程是碳密集型的&#xff0c;会排放大量温室气体。研究人员一直在探索开发「更绿色」的工艺方法。第一性原理理…

DeepMind提出强化学习新方法,可实现人机合作

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;盖策划&#xff1a;凌敏本文来自 BDTechTalks 网站的“AI 研究论文评论”专栏。该专栏提供人工智能最新发现的系列解读文章。尽管人工智能研究人员正力图建立能在围棋、星际争霸到 Dota 等复杂游戏中击败人类…

军事大脑的构建对未来战争的影响

前言&#xff1a;本文是我与军事科学院的赵蔚婷,王婉两位老师在2020年4月发表的一篇论文&#xff0c;首发在《中国科技论文在线》&#xff0c;是将互联网大脑模型与军事领域结合&#xff0c;形成军事大脑和军事超级智能的概念体系&#xff0c;重点提出军事神经元和军事云反射弧…

斯坦福抢开“元宇宙”第一课,上起来还真不便宜

过去半个世纪&#xff0c;斯坦福教给学生的技术&#xff0c;促成了硅谷的诞生&#xff1b;而为了将来的 Web3 时代&#xff0c;斯坦福也已经做好了准备。来源&#xff1a; 硅星人文&#xff1a;杜晨 编辑&#xff1a;VickyXiao今年10月底&#xff0c;硅谷顶级科技公司 Facebo…

加拿大工程院院士于非:互联—— 从质量、能源、信息到智能

来源&#xff1a;AI科技评论整理&#xff1a;莓酊编辑&#xff1a;青暮2021年12月9日&#xff0c;第六届全球人工智能与机器人大会&#xff08;GAIR 2021&#xff09;在深圳正式启幕。140余位产学领袖、30位Fellow聚首&#xff0c;从AI技术、产品、行业、人文、组织等维度切入&…

2021年诺贝尔经济学奖评述:解决重大社会问题的自然实验因果框架

来源&#xff1a;集智俱乐部作者&#xff1a;诺奖委员会译者&#xff1a;邓宇昊 编辑&#xff1a;邓一雪 导语许多重大社会问题都涉及到因果分析。比如&#xff0c;接受更长时间的教育是否会让你未来的收入增加&#xff1f;提高最低工资对一个地方的就业会产生怎样的影响&…

溯因推理:人工智能的盲点

来源&#xff1a;AI前线作者&#xff1a;Ben Dickson译者&#xff1a;Sambodhi策划&#xff1a;凌敏本文给当今人工智能界推崇深度学习的现象泼了冷水&#xff0c;指出了人工智能的盲点&#xff1a;溯因推理&#xff0c;并提醒人们不要忽视深度学习的种种问题&#xff0c;否则将…

终于,LoRaWAN成全球物联网标准!LoRa将拿下LPWAN领域50%市场?

来源&#xff1a;LoRa联盟官网等整理发布&#xff1a;物联网智库 不久之前&#xff0c;支持物联网低功耗广域网&#xff08;LPWAN&#xff09;LoRaWAN开放标准的LoRa联盟宣布&#xff0c;致力于“物联网和智慧城市及社区标准化”的国际电联电信标准化部门&#xff08;ITU-T&…

算法(二叉树-矩阵-堆排序)

最小和 位运算知识点 12>>1 //6 a/2 等价为 a>>1 中间数 (LR)/2 会出现溢出(溢出的意思就是超过了二进制) L(R-L)/2 最终改成 l((r-l)>>1) const smallSum arr > {if (arr null || arr.length < 2) {return 0;}return mergeSort(arr, 0, arr.length …

Nature:盐粒大小的相机,可以拍出清晰彩色照片,未来或可应用到手机

来源&#xff1a;大数据文摘你能想象上图只有盐粒大小的物体是一款相机吗&#xff1f;事实上&#xff0c;这款微型相机甚至可以拍出清晰的全彩图像&#xff0c;而相比之下&#xff0c;普通相机的尺寸要大50万倍。我们可以来看看它的成片。这款微型相机是普林斯顿大学和华盛顿大…

spring学习笔记01-BeanFactory和ApplicationContext的区别

spring学习笔记01-BeanFactory和ApplicationContext的区别 BeanFactory 和 ApplicationContext 的区别 BeanFactory 才是 Spring 容器中的顶层接口。 ApplicationContext 是它的子接口。           BeanFactory 和 ApplicationContext 的区别&#xff1a; 创建对象的…

java微博爬虫

微博爬取要做到每日百万级的数据量&#xff0c;需要解决很多问题。 1.springboot自带Scheduled注解是一个轻量级的quartz&#xff0c;可以完成定时任务。只需要在运行方法上加一个Scheduled注解即可。 该注解有许多属性值 initiaDelay 从程序开始延长一定时间后首次执行。 fixe…

2100年彻底颠覆世界的“十大未来科技”

来源&#xff1a;于硅谷智库 科学家们对2100年前的人类生活进行了十大预测&#xff0c;如果这些预测能够变成现实的话&#xff0c;将会让世界发生翻天覆地的变化。1能上网的隐形眼镜出现时间&#xff1a;2030年前预测者&#xff1a;来自华盛顿大学西雅图分校的巴巴克A帕尔维兹教…

智能如何产生,这仍然是个问题

来源&#xff1a;孙学军科学网博客链接地址&#xff1a;https://blog.sciencenet.cn/blog-41174-1316772.html本文的智能只是生物系统工作原理层面&#xff0c;而不是意识层面的&#xff0c;无论是工作原理&#xff0c;还是大脑意识层面&#xff0c;今天的科学仍然没有给出理想…

spring学习笔记05-IOC常用注解(二)

文章目录2.3 关于 Spring 注解和 XML 的选择问题2.4spring 管理对象细节2.5spring 的纯注解配置2.5.1 待改造的问题2.5.2 新注解说明2.5.2.1 Configuration2.5.2.2 ComponentScan2.5.2.3 Bean2.5.2.4 PropertySource2.5.2.5 Import2.5.2.6 通过注解获取容器&#xff1a;2.3 关于…

一文掌握明年物联网传感器市场!2022中国AIoT产业全景图谱报告新鲜出炉

来源&#xff1a;传感器专家网物联网产业是传感器应用最广泛的领域之一&#xff0c;研发新型传感器&#xff0c;做传感器市场&#xff0c;都不能不考虑物联网产业的需求。2021年随着COVID-19 病毒的存在已常态化&#xff0c;防疫抗疫进入了拉锯阶段&#xff1b;波及全球的“芯片…

EUV光刻机内部揭秘!

转载自: ittbank来源&#xff1a;半导体行业观察PatrickWhelan正在透过他的洁净室服面板凝视着事情的进展。在他面前是一块闪闪发光的玻璃&#xff0c;大约有一个烤箱那么大&#xff0c;上面刻有许多挖出的部分以减轻重量&#xff0c;看起来像一个外星图腾。Whelan 的团队正在将…

数据结构与算法——搜索

文章目录1.内容概述2.岛屿数量2.1 题目描述2.2 DFS深度搜索算法思路2.3 BFS宽度搜索算法思路2.4 C代码实现3.单词接龙3.1 题目描述3.2 算法思路3.3 C代码实现4.单词接龙 II4.1 题目描述4.2 算法思路5.火柴拼正方形5.1 题目描述5.2 算法思路5.3 代码实现5.4 算法思路25.5 代码实…