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

数据结构代码分享-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.xdnf.cn/news/18085.html

相关文章:

  • Redis面试精讲 Day 23:Redis与数据库数据一致性保障
  • Python 设计模式详解 —— 掌握软件设计的通用解决方案
  • 常用的SQL语句
  • ReactNode 类型
  • Java学习笔记:IDEA简单使用技巧
  • 使用vscode的task.json来自动执行make命令,而不直接使用终端
  • Eclipse Tomcat Configuration
  • 基于Python的旅游推荐系统 Python+Django+Vue.js
  • 【抽象类和接口】
  • Javascript面试题及详细答案150道之(106-120)
  • HAL-USART配置
  • 数据电台询价的询价要求
  • 计算机毕业设计java的小天鹅酒店月子会所管理小天鹅酒店母婴护理中心管理系统设计小天鹅酒店产后护理会所信息化管理平台
  • 利用pyxlsbwriter包实现写入xlsb和xlsx格式及读取效率的比较
  • Forward Propagation|前向传播
  • Python可视化工具-Bokeh:动态显示数据
  • 功能强大!开源免费的视频翻译、音视频转录工具
  • 深度解析 Tomcat ProtocolHandler 工作原理
  • 牛客周赛 Round 104(小红的矩阵不动点/小红的不动点权值)
  • 【AI智能体】Dify 搭建发票识别助手操作实战详解
  • 深入理解QFlags:Qt中的位标志管理工具
  • 【URP】[法线贴图]为什么主要是蓝色的?
  • PowerPoint和WPS演示让多个对象通过动画同时出现
  • LeetCode 刷题【44. 通配符匹配】
  • 【杂谈】-以质代量:谷歌主动学习范式重构AI训练逻辑
  • 朝花夕拾(四) --------python中的os库全指南
  • 【k8s】Kubernetes核心概念与架构详解
  • 向量数据库
  • Qt | 四种方式实现多线程导出数据功能
  • Python爬虫实战:研究optimesh库,构建Github网格数据采集系统