顺序表(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语言 编写的顺序表的 ...
随机推荐
- Linux系统内核的作用
Linux系统内核在操作系统中扮演着至关重要的角色,其作用主要体现在以下几个方面: 进程管理:内核负责创建和销毁进程,这是操作系统对计算机上正在运行的程序进行管理的核心部分.内核通过调度器对进程进 ...
- Django框架创建运行最小程序过程记录
基于 python语言 Django web框架下 用pycharm创建,修改,运行 最简单程序.旨在过程 ========================================== 步骤一 ...
- 【全】CSS动画大全之404页面【a】
效果预览 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> < ...
- SRE 必备知识 - Kafka 探秘之零拷贝技术
如果你了解过 Kafka,那么它用到的一个性能优化技术可能会引起你的注意 -- 操作系统的零拷贝(zero-copy)优化. 零拷贝操作可以避免对数据的非必要拷贝,当然,并非是说完全没有拷贝. 在 K ...
- WinForm程序中使用Echarts图表
WinForm程序中使用Echarts 实现原理: WebBrowser + HTML 第一步:在窗体中添加WebBrowser控件 1.在工具箱中找到WebBrowser控件,拖动到窗体中 设置We ...
- Linux 常见编辑器
命令行编辑器 Vim Linux 上最出名的编辑器当属 Vim 了.Vim 由 Vi 发展而来,Vim 的名字意指 Vi IMproved,表示 Vi 的升级版.Vim 对于新手来说使用比较复杂,不过 ...
- C 语言编译过程
编译过程 编译过程是将高级编程语言(如 C 语言)写成的源代码转换成机器可以执行的低级机器语言(通常是二进制代码)的过程.这个过程一般可以分为几个阶段: 预处理(Preprocessing): 预处理 ...
- SNAT 与 DNAT
本文为博主原创,转载请注明出处: SNAT(Source Network Address Translation,源网络地址转换)和DNAT(Destination Network Address T ...
- C#必备技能—项目打包
C#项目打包 开发好一个软件后,交给客户去使用,这时需要对项目进行打包成一个.exe文件,怎么去做?(共三步) 前提 安装扩展:状态栏[扩展]-[管理扩展],搜索setup,点击安装(安装比较慢,等待 ...
- 使用 nuxi upgrade 升级现有nuxt项目版本
title: 使用 nuxi upgrade 升级现有nuxt项目版本 date: 2024/9/10 updated: 2024/9/10 author: cmdragon excerpt: 摘要: ...