当前位置: 首页 > news >正文

C 语言动态顺序表

test.h

#ifndef _TEST_H
#define _TEST_H
#include <stdio.h>
#include <stdlib.h>
#include <string.h>typedef int data_type;// 定义顺序表结构体
typedef struct List{data_type *data; // 顺序表数据int size; // 顺序表当前长度int count; // 顺序表容量
}list;typedef enum{OK,LIST_EMPTY,LIST_FULL,INDEX_ERROR,}RETURNVALUE;list *create_list(void);int list_insert(list *plist, int index, data_type data);int list_show(list *plist);#endif

main.c

#include "../include/test.h"int main()
{int retval = 0;list *plist = create_list();retval = list_insert(plist, 0, 1);retval = list_insert(plist, 1, 2);retval = list_insert(plist, 2, 3);retval = list_insert(plist, 1, 4);retval = list_show(plist);return 0;
}

crud.c

#include "../include/test.h"// 创建动态顺序表
list *create_list(void)
{int list_size = 0; // 初始化顺序表大小list *plist = (list *)malloc(sizeof(list)); // 申请内存空间if(plist == NULL){perror("plist malloc error!");return NULL;}memset(plist, 0, sizeof(list)); // 清零// 手动输入顺序表大小printf("请输入顺序表大小:");scanf("%d", &list_size);// 申请内存空间plist->data = (data_type *)malloc(sizeof(data_type) * list_size);// 初始化顺序表的大小plist->size = list_size;return plist; // 返回顺序表指针
}int list_insert(list *plist, int index, data_type data)
{// 入参检测if(plist == NULL){return LIST_EMPTY;}// 检测顺序表是否已满if(plist->count == plist->size){return LIST_FULL;}// 检测插入位置是否合法if(index < -1 || index > plist->count){return INDEX_ERROR;}// 插入操作:尾插if(index == -1){plist->data[plist->count] = data;plist->count++;return OK;}// 移动元素,实际上在用户按规律顺序插入元素的时候,不会调用此循环,而是直接// 执行 plist->data[index] = data; 的操作for(int i = plist->count; i > index; i--){printf("for(int i = plist->count; i > index; i--){\n");plist->data[i] = plist->data[i - 1];}// 插入元素plist->data[index] = data;// 顺序表元素个数加一plist->count++;return OK;
}int list_show(list *plist)
{if(plist == NULL || plist->count == 0){return LIST_EMPTY;}// 遍历顺序表for(int i = 0; i < plist->count; i++){printf("%d\t\n", plist->data[i]);}putchar(10);return OK;
}

相关文章:

C 语言动态顺序表

test.h #ifndef _TEST_H #define _TEST_H #include <stdio.h> #include <stdlib.h> #include <string.h>typedef int data_type;// 定义顺序表结构体 typedef struct List{data_type *data; // 顺序表数据int size; // 顺序表当前长度int count; // 顺序表容…...

擅于辩论的人可以将黑的说成白的,但是存在无法解决的矛盾

擅于辩论的人有能力通过逻辑、证据和修辞等手段&#xff0c;巧妙地引导听众接受与事实相反的观点。 然而&#xff0c;这并不意味着擅于辩论的人就能将任何事物都颠倒黑白。辩论的基础是事实和逻辑&#xff0c;即使是最优秀的辩手&#xff0c;也必须遵循这些基本原则。如果某个…...

java的命令执行漏洞揭秘

0x01 前言 在Java中可用于执行系统命令常见的方式有两种&#xff0c;API为&#xff1a;java.lang.Runtime、java.lang.ProcessBuilder 0x02 java.lang.Runtime GetMapping("/runtime/exec")public String CommandExec(String cmd) {Runtime run Runtime.getRunti…...

爬虫中常见的加密算法Base64伪加密,MD5加密【DES/AES/RSA/SHA/HMAC】及其代码实现(一)

目录 基础常识 Base64伪加密 python代码实现 摘要算法 1. MD5 1.1 JavaScript 实现 1.2 Python 实现 2. SHA 2.1 JavaScript 实现 2.2 Python 实现 2.3 sha系列特征 3. HMAC 3.1 JavaScript 实现 3.2 Python 实现 对称加密 一. 常见算法归纳 1. 工作模式归纳 …...

C语言数据在内存中的存储超详解

文章目录 1. 整数在内存中的存储2. 大小端字节序和字节序判断2. 1 什么是大小端&#xff1f;2. 2 为什么会有大小端&#xff1f;2. 3 练习 3. 浮点数在内存中的存储3. 1 一个代码3. 2 浮点数的存储3. 2. 1 浮点数存的过程3. 2. 2 浮点数取的过程3. 3 题目解析 1. 整数在内存中的…...

【大模型】【NL2SQL】基本原理

三个输入&#xff1a; prompt 用户输入 数据库表格等信息 sql 语句...

RK3568平台(显示篇)DRM vop驱动程序分析

一.设备树配置 vopb: vopff900000 {compatible "rockchip,rk3399-vop-big";reg <0x0 0xff900000 0x0 0x2000>, <0x0 0xff902000 0x0 0x1000>;interrupts <GIC_SPI 118 IRQ_TYPE_LEVEL_HIGH 0>;assigned-clocks <&cru ACLK_VOP0>, &…...

vue3 动态加载组件

//模版调用 <component :is"geticon(item.icon)" />//引入 import { ref, onMounted, markRaw, defineAsyncComponent } from vue;//异步添加icon图标组建 function geticon(params) {const modules import.meta.glob(../components/icons/*.vue);const link …...

Latex on overleaf入门语法

Latex on overleaf入门语法 前言基本结构序言 简单的格式化命令添加注释&#xff1a;%加粗、斜体、下划线有序列表、无序列表 添加图片图片的标题、标签和引用 添加表格一个简单的表格为表格添加边框标题、标签、引用 数学表达式基本的数学命令 基本格式摘要段落、新行章节、分…...

使用Echarts来实现数据可视化

目录 一.什么是ECharts? 二.如何使用Springboot来从后端给Echarts返回响应的数据&#xff1f; eg:折线图&#xff1a; ①Controller层&#xff1a; ②service层&#xff1a; 一.什么是ECharts? ECharts是一款基于JavaScript的数据可视化图标库&#xff0c;提供直观&…...

一文搞懂GIT

文章目录 1. GiT概述1.1 GIT概述1.2 GIT安装 2. GIT组成3. GIT基本命令3.1 基本命令3.2 分支操作3.3 远程操作3.4 标签操作3.5 其他命令 1. GiT概述 1.1 GIT概述 Git 是一个分布式版本控制系统&#xff0c;被广泛应用于软件开发中。 Git 具有众多优点&#xff0c;比如&#…...

jQuery入门(四)案例

jQuery 操作入门案例 一、复选框案例 功能: 列表的全选&#xff0c;反选&#xff0c;全不选功能实现。 实现步骤和分析&#xff1a; - 全选 1. 为全选按钮绑定单击事件。 2. 获取所有的商品项复选框元素&#xff0c;为其添加 checked 属性&#xff0c;属性值为 true。 -…...

揭秘MITM攻击:原理、手法与防范措施

中间人攻击发生时&#xff0c;攻击者会在通讯两端之间插入自己&#xff0c;成为通信链路的一部分。攻击者可以拦截、查看、修改甚至重新定向受害者之间的通信数据&#xff0c;而不被双方察觉。这种攻击常见于未加密的Wi-Fi网络、不安全的HTTP连接或者通过社会工程学手段诱导受害…...

【YOLOv8】一文全解+亮点介绍+训练教程+独家魔改优化技巧

前言 Hello&#xff0c;大家好&#xff0c;我是cv君&#xff0c;最近开始在空闲之余&#xff0c;经常更新文章啦&#xff01;除目标检测、分类、分隔、姿态估计等任务外&#xff0c;还会涵盖图像增强领域&#xff0c;如超分辨率、画质增强、降噪、夜视增强、去雾去雨、ISP、海…...

创建mvp ubo(uniform buffer object)

创建过程&#xff1a; 创建一个uniform buffer查找buffer memory requirements分配、绑定buffer memorymap buffer memory拷贝mvp data to buffer memoryunmap buffer memory 示例代码&#xff1a; glm::mat4 projection glm::perspective(glm::radians(45.0f), 1.0f, 0.1f…...

1.GPIO

理论说明 输入 上拉输入&#xff1a;拉高电平 下拉输入&#xff1a;拉低电平 浮空输入&#xff1a;不拉高也不拉低电平 输出 开漏输出&#xff1a;不能输出高电平&#xff08;P-MOS不可用&#xff0c;则只能低电平&#xff09; 推挽输出&#xff1a;可输出高低电平 输出速率…...

C++必修:STL之vector的了解与使用

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ &#x1f388;&#x1f388;养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; 所属专栏&#xff1a;C学习 贝蒂的主页&#xff1a;Betty’s blog 1. C/C中的数组 1.1. C语言中的数组 在 C 语言中&#xff0c;数组是一组相同类型…...

【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}

文章目录 1.没有索引存在的问题2. 认识磁盘MySQL与存储MySQL与磁盘交互基本单位建立共识图解IO认识索引 在关系数据库中&#xff0c;索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构&#xff0c;它是某个表中一列或若干列值的集合和相应的指向表中物…...

GO goroutine状态流转

Gidle -> Grunnable newproc获取新的goroutine&#xff0c;并放置到P运行队列中 这也是go关键字之后实际编译调用的方法 func newproc(fn *funcval) {// 获取当前正在运行中的goroutinegp : getg()// 获取调用者的程序计数器地址&#xff0c;用于调试和跟踪pc : getcallerp…...

DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(上)

DLMS/COSEM中的信息安全描述并规定: ——DLMS/COSEM安全概念; ——选择加密算法; ——安全密钥; ——使用加密算法进行实体认证、xDLMS APDU保护和COSEM数据保护。 1.综述 DLMS/COSEM服务器的资源(COSEM对象属性和方法)可以由在应用连接内的DLMS/COSEM客户机访问。 在AA…...

基于 4SAPI 的 API 网关智能监控与故障诊断系统:MTTR 降低 90%,系统可用性提升至 99.99%

前言 在微服务架构盛行的今天&#xff0c;API 网关已经成为企业系统的核心入口&#xff0c;承担着流量路由、负载均衡、认证授权、限流熔断等关键功能。API 网关的稳定性直接决定了整个系统的可用性。但传统的 API 网关监控模式已经难以满足现代企业的需求&#xff1a; 告警风…...

N41 SRS与LTE共用XPXT开关的一些考虑

n41 SRS 与 LTE 共存冲突分析与工程设计指南 核心结论:在 n41 与 LTE 共用 XSPxT(DPDT / DP3T / DP4T)架构下,冲突是物理必然;硬件目标是将干扰压缩至软件可调度范围,系统稳定性最终取决于软件互斥策略。 一、问题本质:为什么 n41 SRS 会和 LTE 冲突? 1️⃣ n41 SRS 的…...

AI应用着陆页模板:快速构建专业产品门户的实战指南

1. 项目概述&#xff1a;一个面向AI应用落地的着陆页模板 最近在折腾AI应用开发的朋友&#xff0c;估计都遇到过同一个问题&#xff1a;模型和算法好不容易调好了&#xff0c;后端API也搭起来了&#xff0c;但一到“怎么让用户用起来”这一步&#xff0c;就卡壳了。尤其是那个…...

一键下载国家中小学智慧教育平台电子课本:让教育资源获取更简单高效

一键下载国家中小学智慧教育平台电子课本&#xff1a;让教育资源获取更简单高效 【免费下载链接】tchMaterial-parser 国家中小学智慧教育平台 电子课本下载工具&#xff0c;帮助您从智慧教育平台中获取电子课本的 PDF 文件网址并进行下载&#xff0c;让您更方便地获取课本内容…...

上午题_程序设计语言

编译程序和解释程序...

Super IO插件:Blender文件操作效率革命,从繁琐拖拽到智能粘贴

Super IO插件&#xff1a;Blender文件操作效率革命&#xff0c;从繁琐拖拽到智能粘贴 【免费下载链接】super_io blender addon for copy paste import / export 项目地址: https://gitcode.com/gh_mirrors/su/super_io Super IO是一款革命性的Blender插件&#xff0c;通…...

安达发|自动排单软件:破工程机械困局,助智能制造升级

安达发APS高级生产计划智能排产排程自动排单软件系统推荐_MES 在工程机械制造领域&#xff0c;挖掘机、起重机、混凝土泵车等产品结构复杂&#xff0c;一台设备涉及成千上万个零部件&#xff0c;订单个性化程度高、生产周期长&#xff0c;生产排单一度成为困扰企业发展的核心痛…...

AI模型Docker镜像构建指南:从环境封装到生产部署

1. 项目概述&#xff1a;一个AI模型镜像的诞生与价值最近在开发者社区里&#xff0c;看到不少朋友在讨论一个名为xianyu110/claude4.5的镜像。乍一看这个标题&#xff0c;很多刚接触的朋友可能会有点懵&#xff1a;这到底是啥&#xff1f;是一个新的开源项目&#xff0c;还是一…...

音频变压器关键参数深度解析:Z值与最大电流的工程实践

音频变压器关键参数深度解析&#xff1a;Z值与最大电流的工程实践引言在专业音频系统、高保真音响以及工业信号隔离场景中&#xff0c;音频变压器始终扮演着不可替代的角色。它的核心使命是在保持信号完整性的同时&#xff0c;完成阻抗匹配、地环路隔离和信号平衡转换三大任务。…...

【DeepSeek开发者垂直搜索实战指南】:3大行业落地案例+5个避坑要点,限时公开内部调优参数

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;DeepSeek开发者垂直搜索应用案例全景概览 DeepSeek系列大模型凭借其开源、高性能与强推理能力&#xff0c;正被广泛集成至开发者垂直搜索场景中——从代码片段检索、API文档语义查找&#xff0c;到私有…...