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

数据结构代码分享-1 顺序表

    add.c

#include<stdio.h>
#include "add.h"
//1.创建一个空的顺序表
seqlist_t *CreateEpSeqlist()
{//开辟空间seqlist_t *p = (seqlist_t*)malloc(sizeof(seqlist_t));//容错判断if(p==NULL){printf("error\n");return NULL;}return p;
}//2.向顺序表的指定位置插入数据
int InsertIntoSeqlist(seqlist_t *p, int post, int data)
{//容错判断if(post < 0 || post > p->last+1 || IsFullSeqlist(p)==0){printf("error\n");return -1;}    //从post位置到last位置整体向后移动一位,last+1;for(int i=p->last;i>=post;i--){p->data[i+1]=p->data[i];}p->data[post]=data;p->last++;return p;
}
//3.遍历顺序表sequence顺序list表
void ShowSeqlist(seqlist_t *p)
{for(int i=0;i<=p->last;i++){printf("%d ",p->data[i]);}printf("\n");
}
//4.判断顺序表是否为满,满返回1,未满返回0
int IsFullSeqlist(seqlist_t *p)
{return p->last == N-1;
}
//5.判断顺序表是否为空
int IsEpSeqlist(seqlist_t *p)
{return p->last==-1;
}
//6.删除顺序表中指定位置的数据
int DeleteIntoSeqlist(seqlist_t *p, int post)
{//容错判断if(post<0 || post>p->last){printf("error\n");return -1;}//从post+1到last整体往前移一位,last-1;for(int i=post+1;i<=p->last;i++){p[i]=p[i-1];}p->last--;return 0;
}
//7.清空顺序表 (清空:访问不到,但是内存中还有;销毁:内存清空)
void ClearSeqList(seqlist_t *p)
{p->last=-1;
}
//8.修改指定位置的数据,post为被修改数据位置,data为修改成的数据
int ChangePostSeqList(seqlist_t *p,int post,int data)
{//容错判断if(post<0 || post>p->last || p->last == -1){printf("error\n");return -1;}for(int i=0;i<p->last;i++){if(post==i){p->data[i]=data;}}
}
//9.查找制定数据出现位置,data为被查找的数据,返回下标,未找到返回-1
int SearchDataSeqList(seqlist_t *p,int data)
{//容错if(p->last==-1){printf("error\n");return -1;}for (int i = 0; i <= p->last; i++){if(p->data[i]==data){return i;}}return -1;
}

add.h

#ifndef __ADD_H__
#define __ADD_H__
#define N 20
typedef struct seqlist
{int data[N];int last; //代表数组中最后一个有效元素的下标
} seqlist_t;//1.创建一个空的顺序表
seqlist_t *CreateEpSeqlist();
//2.向顺序表的指定位置插入数据
int InsertIntoSeqlist(seqlist_t *p, int post, int data);
//3.遍历顺序表sequence顺序list表
void ShowSeqlist(seqlist_t *p);
//4.判断顺序表是否为满,满返回1,未满返回0
int IsFullSeqlist(seqlist_t *p);
//5.判断顺序表是否为空
int IsEpSeqlist(seqlist_t *p);
//6.删除顺序表中指定位置的数据
int DeleteIntoSeqlist(seqlist_t *p, int post);
//7.清空顺序表 (清空:访问不到,但是内存中还有;销毁:内存清空)
void ClearSeqList(seqlist_t *p);
//8.修改指定位置的数据,post为被修改数据位置,data为修改成的数据
int ChangePostSeqList(seqlist_t *p,int post,int data);
//9.查找制定数据出现位置,data为被查找的数据,返回下标,未找到返回-1
int SearchDataSeqList(seqlist_t *p,int data);
#endif

main.c

#include<stdio.h>
#include"add.h"
#include<stdlib.h>int main(int argc, char const *argv[])
{seqlist_t *p = CreateEpSeqlist();int flag = IsEpSeqlist(p);if(flag == 1)printf("seqlist is Ep\n");printf("%d\n", p->last);for (int i = 0; i < 5; i++){InsertIntoSeqlist(p, i, i+1);}ShowSeqlist(p);DeleteIntoSeqlist(p, 0);ShowSeqlist(p);InsertIntoSeqlist(p, 1, 100);ShowSeqlist(p);ChangePostSeqList(p, 0, 1103);ShowSeqlist(p);printf("Search 5: %d\n", SearchDataSeqList(p, 5));printf("Search 100: %d\n", SearchDataSeqList(p, 100));// 相关操作完成,释放空间free(p);p = NULL;return 0;
}

http://www.dtcms.com/a/335551.html

相关文章:

  • 数字人视频互动技术对比
  • 云计算-k8s实战指南:从 ServiceMesh 服务网格、流量管理、limitrange管理、亲和性、环境变量到RBAC管理全流程
  • Day07 缓存商品 购物车
  • 【远程桌面】从RustDesk服务器看UDP对比WebRTC
  • es下载、安装、部署以及集成和mysql数据同步
  • 给纯小白的Python操作Word笔记
  • gin结合minio来做文件存储
  • The Network Link Layer: 无线传感器中Delay Tolerant Networks – DTNs 延迟容忍网络
  • css: word pacing属性
  • 哈希表与unorder_set,unorder_map的学习
  • Spring 源码学习(十一)—— webmvc 配置
  • 【JavaEE】多线程初阶3:死锁 + 线程安全 + volatile 关键字
  • 已开源:Highcharts.NET,Highcharts Android,与Highcharts iOS集成
  • VS Code配置MinGW64编译Apache Arrow C++库
  • 2025年服装工厂生产管理系统软件推荐
  • 远程桌面管理工具 - 交互式版本
  • 达梦数据库常见的重要巡检语句
  • Qt5 的基础知识
  • 【UEFI系列】ACPI
  • 51单片机-驱动独立按键模块教程
  • 类的静态成员的定义、调用及继承详解【C++每日一学】
  • AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年8月17日第163弹
  • 深度学习-计算机视觉-数据增广/图像增广
  • 《MATLAB绘图进阶教程》主要内容与专栏目录(持续更新中。。。)
  • GitHub 热榜项目 - 日榜(2025-08-17)
  • 智能体与MCP的核心流程和差异点(适合初学者)
  • IDEA飞算插件测评:重塑AI编码价值的实战体验
  • 【IDEA】设置Debug调试时调试器不进入特定类(Spring框架、Mybatis框架)
  • GEO(生成引擎优化)是什么?GEO优化怎么做
  • 在QML中使用Chart组件