自己手写一个线性表List【C风格】

#include <iostream>//线性表、顺序表List#define MAX_SIZE 20
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0typedef int Status;//返回状态类型
typedef int ElemType;//元素类型//结构体
typedef struct 
{ElemType data[MAX_SIZE];//数据类型,数组int length;//长度
} myList;//初始化
Status InitList(myList* list)
{//如果为空返回if (list == NULL)return ERROR;//不为空,设置为空list->length = 0;return OK;
}//清空列表
Status ClearList(myList* list)
{//如果为空返回if (list == NULL)return ERROR;//不为空,设置为空list->length = 0;return OK;
}//列表是否为空
Status ListIsEmpty(myList* list)
{//列表不存在,就是空if (list == NULL)return TRUE;//长度为0,为空if (list->length == 0)return TRUE;//否则就非空return FALSE;
}//获取列表长度
Status ListLength(myList* list)
{return list->length;
}//插入数据
Status ListInsert(myList* list,int index,const ElemType e)
{//如果列表为空if ((list->length == 0)&&(index == 1)){list->data[0] = e;list->length++;return OK;}//如果列表不为空if ((index <= list->length) && (index >= 1) && (list->length < MAX_SIZE)){for (int i = list->length - 1; i >= index - 1; i--){list->data[i + 1] = list->data[i];}list->data[index - 1] = e;list->length++;return OK;}return ERROR;
}//删除数据
Status ListDelete(myList* list, int index)
{//删除中间的元素if ((index < list->length) && (index > 0) ){for (int i = index; i < list->length; i++){list->data[i-1] = list->data[i];}list->length--;return OK;}//删除末尾的元素if ((index == list->length) && (index > 0)){list->length--;return OK;}return ERROR;
}//遍历元素
Status ListTraverse(myList* list)
{for (int i = 0; i < list->length; i++){printf("%d-->",list->data[i]);}printf("\r\n");return OK;
}//访问元素
Status GetElem(myList* list, int index, ElemType* e)
{if ((index > 0) && (index < list->length) && (list->length > 0)){*e = list->data[index - 1];return OK;}return ERROR;
}int main()
{myList list;ElemType e;Status res;int i, j;res = InitList(&list);printf("初始化后:length = %d\n", list.length);//插入元素for (i = 0; i < 6; i++){res = ListInsert(&list, 1, i);}ListTraverse(&list);//显示元素res = ListIsEmpty(&list);printf("list 是否为空?%d(1: 是,0: 否)\n", res);ClearList(&list);res = ListIsEmpty(&list);printf("list 是否为空?%d(1: 是,0: 否)\n", res);for (i = 0; i < 11; i++){res = ListInsert(&list, 1, i);}ListTraverse(&list);//显示元素ListInsert(&list, 1, 0);ListTraverse(&list);//显示元素GetElem(&list, 5, &e);printf("第5元素是%d\n", e);j = list.length;res =  ListDelete(&list, j+1);if (res == ERROR)printf("删除第%d元素失败!\n", j + 1);elseprintf("删除第%d元素成功!\n", j);res = ListDelete(&list, j);if (res == ERROR)printf("删除第%d元素失败!\n", j);elseprintf("删除第%d元素成功!\n", j);ListTraverse(&list);//显示元素res = ListDelete(&list, 5);if(res == OK)printf("删除第%d元素成功!\n", 5);ListTraverse(&list);//显示元素return 0;
}

在这里插入图片描述

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

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

相关文章

Python爬虫项目实战:百度任意图片抓取

大家好&#xff0c;我是南枫&#xff0c;这篇文章我将给大家介绍如何使用Python爬虫来达到想爬哪个明星图片就能爬下来的效果&#xff0c;那我们接下来看看如何实现的吧。 导入Python的requests库和re库。requests库用于发送HTTP请求&#xff0c;而re库用于处理正则表达式。 通…

20个例题掌握Python类相关知识点

1. 定义一个简单的类 class Dog:def __init__(self, name):self.name namedef bark(self):print(f"{self.name} says woof!")if __name__ "__main__":my_dog Dog("Rex")my_dog.bark()2. 类的基本属性 class Car:def __init__(self, brand, …

npm build报错Cannot find module ‘html-webpack-plugin‘解决方法

目录 一、问题描述二、问题原因三、解决方法 一、问题描述 npm build 报错&#xff1a; ERROR Error: Cannot find module html-webpack-pluginRequire stack:- D:\Workspaces\WebstormProjects\yy-cloud\ruoyi-ui\node_modules\script-ext-html-webpack-plugin\lib\plugin.j…

如何在已有Docker环境中安装包

1. 只在container中一次性安装&#xff0c;不影响image 首先启动容器&#xff0c;然后进入容器 docker-compose exec <service_name> bash其中&#xff0c;<service_name>可以通过以下命令查询&#xff08;前提是要先启动容器&#xff09; docker-compose ps进入…

【Spring】Spring主要知识点目录整理

1. Spring框架概述 作者相关文章链接&#xff1a; 1、【Spring】SpringFrameWork框架简介-CSDN博客 2、【Spring】设计模式(GOF)-CSDN博客 3、【Spring】spring入门程序-CSDN博客 定义&#xff1a;Spring是一个轻量级的Java开发框架&#xff0c;旨在解决企业级应用开发的业…

2024/5/27 ARMday10 PWM实验蜂鸣器发声

TIM4.c #include "tim4.h" void tim4_init() {//1.设置tim4&#xff0c;GPIOB时钟使能RCC->MP_AHB4ENSETR | (0x1<<1);RCC->MP_APB1ENSETR | (0x1<<2);//2.设置PB6引脚为复位功能GPIOB->MODER & (~(0x3<<12));GPIOB->MODER | (0x…

【mybatis解决oracle查询in超过1000条数据】

1、因为代码中前人未考虑in 数据可能大于1000&#xff0c;导致现在系统报错&#xff0c;MPP low前人 直接上sql select * from table a <where><if test"list ! null and list.size > 0">and a.name in<foreach collection"list" inde…

【EI会议】2024年互联网技术与环境工程国际会议(IACITEE 2024)

【EI会议】2024年互联网技术与环境工程国际会议&#xff08;IACITEE 2024&#xff09; 2024 International Conference on Internet Technology and Environmental Engineering 互联网技术与环境工程国际会议&#xff08;IACITEE 2024&#xff09;将在重庆举行&#xff0c;主…

DataGrip测试连接时出现报错解决方案

&#xff08;一&#xff09;报错情况描述&#xff1a; DBMS: MySQL (无版本) 区分大小写: 普通形式mixed&#xff0c;分隔形式exact Connection refused: connect. &#xff08;二&#xff09;解决方案&#xff1a; 1、 首先打开命令指示符&#xff0c;选择以管理员身份运行。…

spring boot添加License(软件许可)

文章目录 前言1. 生成钥匙库2. 生成证书3. 生成公匙库4.业务代码1. 引入依赖2. 关键代码3. 配置文件 5、改成线上地址&#xff0c;这样不用每次打包&#xff0c;发送license.lic文件给客户&#xff0c;重启项目就行5.1、工具类5.2 修改部分&#xff1a; 总结 前言 工作需要给软…

Activity启动流程要点

一、Activity启动流程 Activity的启动流程一般是通过调用startActivity或者是startActivityForResult来开始的startActivity内部也是通过调用startActivityForResult来启动Activity&#xff0c;只不过传递的requestCode小于0Activity的启动流程涉及到多个进程之间的通讯这里主…

vue 如果有某个子元素就给父元素加样式,或者通过子元素显示来判断父元素是否显示

有这样一个场景&#xff0c;父元素是一个 div&#xff0c;然后里边有多个子元素&#xff0c;同时父元素上添加了很多样式 需求是&#xff1a;如果有子元素&#xff0c;那么就显示父元素&#xff0c;如果没有一个子元素&#xff0c;则父元素也不显示 代码结构&#xff1a; <…

【vue-5】双向数据绑定v-model及修饰符

单向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xff0c;数据不会自动更新&#xff1b; 双向数据绑定&#xff1a;当数据发生改变时&#xff0c;视图会自动更新&#xff0c;但当用户手动更改input的值&#xf…

鸿蒙原生应用元服务开发-WEB跨应用跳转

Web组件可以实现点击前端页面超链接跳转到其他应用。 在下面的示例中&#xff0c;点击call.html前端页面中的超连接&#xff0c;跳转到电话应用的拨号界面。 应用侧代码。 // xxx.ets import web_webview from ohos.web.webview; import call from ohos.telephony.call;Entr…

Vue基础(数据绑定、export使用)

1、简介 在使用vue开发的过程中&#xff0c;经常会遇到一些容易混淆的问题&#xff0c;因此&#xff0c;在本文中进行汇总操作&#xff0c;只有通过不断总结学习&#xff0c;才能更好掌握vue的使用&#xff08;每天进步一点&#xff09;。 2、数据绑定 在js中定义数据&#xf…

音乐编曲软件哪个好用 studio one和fl studio哪个好

编曲软件的出现&#xff0c;打破了时间与空间的限制&#xff0c;使得创作者能随时随地进行音乐创作。随着信息时代的发展&#xff0c;使用编曲软件进行音乐创作已经成为业界主流。业内常用的有Cubsae、LogicPro、Studio One、Ableton live等&#xff0c;这次教程我将为大家解读…

HTTP 协议的基本格式和Fidder的简单使用

HTTP协议诞生于1996&#xff08;开玩笑哈&#xff0c;诞生于1991年&#xff09;&#xff0c;http协议用于网页和手机app和服务器交互的场景。通过HTTP协议&#xff0c;客户端&#xff08;例如网页浏览器或手机应用&#xff09;可以向服务器发送请求&#xff0c;服务器则会响应这…

大数据开发面试题【Hadoop篇】

1、Hadoop特点 hadoop是一个分布式计算平台&#xff0c;能够允许使用编程模型在集群上对大型数据集进行分布式处理 hadoop的三大组件&#xff1a;HDFS&#xff08;分布式文件存储平台&#xff09;、MR&#xff08;计算引擎&#xff09;、YARN&#xff08;资源调度平台&#xf…

苹果手机突然白屏无反应怎么办?白屏修复办法分享!

苹果手机突然白屏无反应怎么办&#xff1f;下面小编就来给大家分享苹果手机突然白屏的原因和修复办法。 一般造成苹果手机出现白屏的原因如下&#xff1a; 系统问题&#xff1a;iOS系统的故障是导致苹果设备白屏无反应最常见的原因之一。例如&#xff0c;系统更新失败、应用冲…

TI_DSP_F2808学习笔记3: ePWM

共有6组ePWM&#xff0c;每一组 ePWM 模块都包含以下 7 个模块&#xff1a;时基模块 TB、计数比较模块 CC、动作模块 AQ、死区产生模块 DB、PWM 斩波模块 PC、错误联防模块 TZ、时间触发模块 ET。 时基模块 TB 确定PWM的周期和相位。 1&#xff09;PWM 时基计数器&#xff…