顺序表(C语言)
在数据结构的世界里,顺序表是一种基础且重要的结构。它通常使用数组来实现,提供了快速的随机访问能力。本文将介绍如何在C语言中实现一个简单的顺序表,包括初始化、插入、删除和打印操作。
1.定义顺序表结构体
首先,我们需要定义一个结构体来表示顺序表:
#define Max_Size 100
typedef int ElemType;
typedef struct {
ElemType* data; //存放线性表中的长度
int length; //存放线性表长度
}Seqlist; //顺序表类型
2.初始化顺序表
接下来,我们需要实现一个初始化函数,为顺序表分配内存,并设置初始长度和容量:
// 创建顺序表
void initSeqlist(Seqlist* L) {
L->data = (ElemType*)malloc(sizeof(ElemType)*Max_Size);
if(L->data == NULL) {
printf("顺序表创建失败\n");
}
L->length = 0;
}
3.插入元素
3.1顺序表头插
//顺序表头插
void insertATBegining(Seqlist* L) {
int elem = 0;
printf("请输入要头插的元素:\n");
scanf("%d",&elem);
if(L->length >= Max_Size) {
printf("顺序表已满,无法插入");
}
else {
for (int i = L->length - 1; i >= 0; i--) {
L->data[i + 1] = L->data[i];
}
L->data[0] = elem;
L->length++;
}
}
3.2 顺序表尾插
//顺序表尾插
void insertAtBegining(Seqlist* L) {
int elem = 0;
printf("请输入要尾插的元素:\n");
scanf("%d",&elem);
if(L->length >= Max_Size) {
printf("顺序表已满,无法插入");
}
else {
L->data[L->length] = elem;
L->length++;
}
}
4.删除顺序表指定元素
//删除指定元素
void DetateElem(Seqlist* L) {
int elem = 0;
printf("请输入要删除的元素:\n");
scanf("%d",&elem);
for (int i = 0; i < L->length; i++) {
if(L->data[i] == elem) {
for (int j = i; j < L->length - 1; j++) {
L->data[j] = L->[j + 1];
}
L->length--;
}
}
}
5.查找元素
// 查找元素是否在顺序表中
bool findelem(Seqlist* L) {
int elem = 0;
printf("请输入要查找的元素:\n");
scanf("%d",&elem);
for (int i = 0; i < L->length; i++) {
if (L->data[i] == elem) {
return true;
}
}
return false;
}
6.输出顺序表
// 输出顺序表
void DispSeqlise(Seqlist* L) {
if(L->length == 0) {
printf("线性表为空\n");
}
for (int i = 0; i < L->length; i++) {
printf("%d",L->data[i]);
}
}
7.销毁顺序表
// 销毁顺序表
void deleteSeqlist(Seqlist* L) {
free(L);
}
顺序表(C语言)的更多相关文章
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- 顺序表C语言版
#include <stdio.h> /* * 顺序表最多输入N个数 */ #define N 10 #define OK 1 #define ERROR -1 struct sequeu ...
- 线性表之顺序表(C语言实现)
线性表是从数据元素的逻辑结构上定义的. 这种数据元素的逻辑结构的特征如下: 1.除开第一个和最后一个元素之外.所有元素都有一个前驱元素和后继元素. 2.第一个元素无前驱元素,但有后继元素. 3.最后一 ...
- 顺序表-Go语言实现
简单理解就是数组: 优缺点及使用场景 优点: 随机访问,在O(1)时间内找到第i个元素: 数据表中的数据是连续存放的,因此只要知道数据表中第一个元素的地址,那么后面的数据元素的地址就可以马上算出来. ...
- 顺序表-C语言实现
顺序存储线性表的结构体: #define MAXSIZE 100 //数组最大长度 typedef int ElemType; //元素类型 typedef struct //定义线性表结构体 { E ...
- 数据结构C语言版--动态顺序表的基本功能实现(二)
/* * 若各个方法结构体变量参数为: &L(即地址符加变量)则结构体变量访问结构成员变量时使用"." * 若为:*L(即取地址符加变量)则结构体变量访问结构体成员变量使用 ...
- C语言实现顺序表
C语言实现顺序表代码 文件SeqList.cpp #pragma warning(disable: 4715) #include"SeqList.h" void ShowSeqLi ...
- c语言进阶12-线性表之顺序表
一. 线性表的定义 为什么要学习线性表呢? 因为我们日常生活中存在种数据关系,计算机程序是为了解决日常生活的数据关系,因此我们要学习线性表. 线性表是什么呢? 线性表是由n个元素组成的有限序列. 需 ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- 【数据结构】之顺序表(C语言描述)
顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...
随机推荐
- oracle利用job实现存储过程异步执行
1.背景 在实际开发中,我们可能会利用存储过程批量处理业务, 对应有些存储过程可能会执行很长时间,这时我们需要客户端点操作后,存储过程异步执行 具体实现如下 1.创建处理业务的存储过程:sp_test ...
- Functional PHP (通义千问)
Functional PHP 是一个专为 PHP 开发者设计的库,旨在引入函数式编程的概念和工具,帮助开发者编写更高效.可读性强的代码.以下是几个使用 Functional PHP 库进行函数式编程的 ...
- Apache DolphinScheduler:深入了解大数据调度工具
一.海豚调度介绍 Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统.适用于企业级场景,提供了一个可视化操作任务.工作流和全生命周期数据处理过程的解 ...
- springcloud线上发布超时方案之终极杀招:预热(测试用例)
springcloud线上发布超时系列文章: springcloud线上发布超时之feign(ribbon饥饿加载) springcloud线上发布超时之grpc springcloud线上发布超时方 ...
- **错误积累&&防止GG写法总结
19.3.20 关于int与ll 1.如果一道题时间充足,把全部变量定义成long long 2.特别注意最上面宏定义的变量类型,特别是FOR 3.如果是int,用1LL* ...... **实例,让 ...
- kafka消费者处理能力低引起rebalance分析
一.背景介绍 项目上进行算法调度的需求,打算采用kafka作为消息中间件,通过将多个算法消费者加入到同一个group中并行的处理算法请求,从而达到高效处理的目的.但是算法处理的时间较长,多则几十分钟, ...
- freertos学习笔记(十)事件标志组
事件标志组 相当于用户平时定义的Flag,事件标志,不过freertos支持将该标志组作为启动task的条件 概述 分为8位和24位的模式(通过设置宏来配置) 每一位有0和1两个状态 用法 用于平常程 ...
- 【DVWA】搭建安全测试环境
一.搭建DVWA环境 用docker输入命令: docker run -d --name zc_dvwa -p 8081:80 vulnerables/web-dvwa 安装完成: 输入地址:http ...
- linux 上抓包
#tcpdump -i mgmt0 -nn -s0 -v port 8001 capture IPv6 ping packets #tcpdump ip6 -i nic0 -nn -s0 and ic ...
- webpack系列-externals配置使用(CDN方式引入JS)
如果需要引用一个库,但是又不想让webpack打包(减少打包的时间),并且又不影响我们在程序中以CMD.AMD或者window/global全局等方式进行使用(一般都以import方式引用使用),那就 ...