当前位置: 首页 > 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;
}

http://www.lryc.cn/news/412060.html

相关文章:

  • 擅于辩论的人可以将黑的说成白的,但是存在无法解决的矛盾
  • java的命令执行漏洞揭秘
  • 爬虫中常见的加密算法Base64伪加密,MD5加密【DES/AES/RSA/SHA/HMAC】及其代码实现(一)
  • C语言数据在内存中的存储超详解
  • 【大模型】【NL2SQL】基本原理
  • RK3568平台(显示篇)DRM vop驱动程序分析
  • vue3 动态加载组件
  • Latex on overleaf入门语法
  • 使用Echarts来实现数据可视化
  • 一文搞懂GIT
  • jQuery入门(四)案例
  • 揭秘MITM攻击:原理、手法与防范措施
  • 【YOLOv8】一文全解+亮点介绍+训练教程+独家魔改优化技巧
  • 创建mvp ubo(uniform buffer object)
  • 1.GPIO
  • C++必修:STL之vector的了解与使用
  • 【MySQL】索引 【上】 {没有索引的查询/磁盘/mysql与磁盘IO/初识索引}
  • GO goroutine状态流转
  • DLMS/COSEM中的信息安全:DLMS/COSEM安全概念(上)
  • C语言第九天笔记
  • 智慧环卫可视化:科技赋能城市清洁管理
  • 【力扣】SQL题库练习5
  • 永结无间Ⅸ--你不需要LLM Agent
  • Simulink|基于粒子群算法的永磁同步电机多参数辨识
  • 程序如何自动点击亚马逊商户后台的“邀请评论”按钮
  • 大模型算法面试题(十八)
  • 手机在网状态接口如何对接?(二)
  • 力扣-3232. 判断是否可以赢得数字游戏
  • Table SQL connectors以及FileSystem、JDBC connector
  • Animate软件基础:“分散到图层”创建的新图层