当前位置: 首页 > 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.lryc.cn/news/623458.html

相关文章:

  • 简单的 VSCode 设置
  • Oracle algorithm的含义
  • 基于Vue + Node能源采购系统的设计与实现/基于express的能源管理系统#node.js
  • Qt 5.5 的安装与配置(使用 VSCode编辑)
  • 【架构师从入门到进阶】第五章:DNSCDN网关优化思路——第十二节:网关安全-信息过滤
  • 基于多Agent的AFSIM复杂场景脚本生成技术(使用Claude Code)
  • 根号算法Ⅰ
  • 天地图应用篇: 增加缩放、比例尺控件
  • 24. 什么是不可变对象,好处是什么
  • 【Docker】搭建一款功能强大且免费的开源在线绘图工具 - draw.io
  • 云原生俱乐部-RH134知识点总结(2)
  • 62.不同路径
  • 【计算机网络面试】键入网址到网页显示期间,发生了什么?
  • 网络常识-DNS如何解析
  • 数据结构初阶(19)外排序·文件归并排序的实现
  • Ugit使用记录
  • 【自动化运维神器Ansible】template流程控制:for循环与if条件判断详解
  • Flink作业执行的第一步:DataFlow graph的构建
  • C11期作业18(07.12)
  • 栈与队列:数据结构中的双生子
  • 【JavaEE】多线程 -- 单例模式
  • [python学习记录2]变量
  • Maven 开发实践
  • PCA的一些实际应用
  • 详解flink java基础(一)
  • 前端项目的打包部署
  • 【MySQL学习|黑马笔记|Day7】触发器和锁(全局锁、表级锁、行级锁、)
  • Docker Compose 安装 Neo4j 的详细步骤
  • Docker之自定义jkd镜像上传阿里云
  • Docker+飞算JavaAI=未来:全流程容器化AI开发实战