登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
1.顺序表的构建以及应用
1.顺序表的构建以及应用
[ 复制链接 ]
章娅萝
2025-7-27 22:35:16
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
设计了顺序表的创建,增添,删除,等函数接口
/****************************************************************************
*
* file name: 2025-07-10_Sequencelist.c
* author : 15515376695@163.com
* date : 2025-07-10
* function : 该程序实现顺序表元素的增删改查
* note : None
* CopyRight (c) 2025 15515376695@163.com Right Reseverd
*
****************************************************************************/
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
//用户可以根据自己的需要进行修改所需的数据类型
typedef int DataType_t;
//构造顺序表各项参数
typedef struct SepuenceList
{
DataType_t * Addr;//记录顺序表首地址
unsigned int Size;//记录顺序表容量
int Last;//顺序表的最后一个元素的下标
}SeqList_t;
//创建顺序表并对其初始化
SeqList_t * SeqList_Create(unsigned int size)
{
//1.使用calloc为顺序表的管理结构体从堆空间申请一块内存
SeqList_t * Manager = (SeqList_t *)calloc(1,sizeof(Manager));
//进行一个内存错误处理
if (NULL == Manager)
{
perror("calloc memory for manager is failed");
exit(-1);程序终止
}
//2.使用calloc为所有元素从堆空间申请内存
Manager->Addr = (DataType_t *)calloc(size,sizeof(DataType_t));
if (NULL == Manager->Addr)
{
perror("calloc memory for manager is failed");
free(Manager);//同时将管理结构体的内存也进行释放
exit(-1);程序终止
}
//3.对管理顺序表的结构体进行初始化(元素容量 + 最后元素下标)
Manager->Size = size;
Manager->Last = -1;
return Manager;
}
//判断顺序表是否已满
bool SeqList_IsFull(SeqList_t *Manager)
{
return(Manager->Last + 1 == Manager->Size) ? true : false;
}
//向顺序表尾部加入元素
bool SeqList_TailAdd(SeqList_t *Manager,DataType_t Data)
{
if (SeqList_IsFull(Manager))
{
printf("SepuenceList is full\n");
return false
}
Manager->Addr[++Manager->Last] = Data;
return true;
}
//向顺序表的头部加入元素
bool SeqList_HeadAdd(SeqList_t *Manager,DataType_t Data)
{
if (SeqList_IsFull(Manager))
{
printf("SepuenceList is full\n");
return false
}
for (int i = Manager->Last; i >= 0; i--)
{
Manager->Addr[i+1] = Manager->Addr[i]
}
//3.在顺序表头部添加元素
Manager->Addr[0] = Data;
Manager->Last++;
return true
}
//判断顺序表是否为空
bool SeqList_IsEmpty(SeqList_t *Manager)
{
return (-1 == Manager->Last) ? true : false;
}
//删除顺序表元素
bool SeqList_Del(SeqList_t * Manager,DataType_t DestVal)
{
int temp = -1;//记录要删除的元素下标
//1.判断顺序表是否为空
if(SeqList_IsEmpty(Manager))
{
printf("SepuenceList is Empty\n");
return false
}
//2.寻找目标元素的位置,并进行删除操作
for (int i = 0; i <= Manager->Last; ++i)
{
if(DestVal == Manager->Addr[i])
{
temp = i;
break;
}
}
//3.如果没有目标值直接终止函数
if (-1 == temp)
{
printf("destval [%d] is not found\n",DestVal);
return false;
}
//4.进行删除目标元素操作:直接把该元素的后继元素向前移动一个单位
for (int i = temp; i < Manager->Last; ++i)
{
Manager->Addr[i] = Manager->Addr[i+1];
}
//5.因为删除了一个元素,需要将顺序表的有效元素下表-1
Manager->Last--;
return true;
}
//遍历顺序表元素
void SeqList_Print(SeqList_t *Manager)
{
for (int i = 0; i <= Manager->Last; ++i)
{
printf("Element[%d] = %d\n",i,Manager->Addr[i] );
}
}
复制代码
已知一个顺序表L,其中的元素递增有序排列,设计一个算法,插入一个元素x(x为int型)后保持该顺序表仍然递增有序排列(假设插入操作总能成功)。
void SeqList_Insert(SeqList *L,int x)
{
int temp = -1;//构建变量,记录待插入位置的下标
for (int i = 0; i < last; ++i)
{
if (x < L[i])
{
temp = i;
break;
}
}
if (-1 == temp)//x要插入到尾部
{
L[last+1] = x;
return;
}
for (int i = last; i >=temp; --i)
{
L[i+1] = L[i];//从待插入位置之后的元素都向后移一位
}
L[temp] = x;
}****
复制代码
<strong>删除顺序表L中下标为p(0≤p
顺序
构建
以及
应用
相关帖子
Electron.js 详解、应用场景及完整案例
LLM应用剖析: 小红书AI图文生成器-红墨
深入理解MCP:AI 应用与外部世界的桥梁
基于seekdb,教你从零开始构建智能搜书应用
Flask 应用部署实战:Nginx 反向代理配置指南
Python 潮流周刊#131:从零开始构建智能体
LLM应用实践: NoteBookLM初次使用
用 .NET 最小化 API 构建高性能 API
顺序表实现线性结构
Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
Electron.js 详解、应用场景及完整案例
3
722
甘子萱
2025-12-08
业界
LLM应用剖析: 小红书AI图文生成器-红墨
1
550
晾棋砷
2025-12-08
业界
深入理解MCP:AI 应用与外部世界的桥梁
1
152
姘轻拎
2025-12-09
科技
基于seekdb,教你从零开始构建智能搜书应用
3
387
萧海芷
2025-12-10
业界
Flask 应用部署实战:Nginx 反向代理配置指南
1
948
盒礁泅
2025-12-11
安全
Python 潮流周刊#131:从零开始构建智能体
0
188
菅舛
2025-12-13
业界
LLM应用实践: NoteBookLM初次使用
0
599
都淑贞
2025-12-15
业界
用 .NET 最小化 API 构建高性能 API
0
1019
科元料
2025-12-17
安全
顺序表实现线性结构
0
914
腥狩频
2025-12-19
业界
Buildah 简明教程:让镜像构建更轻量,告别 Docker 依赖
0
983
都硎唷
2025-12-20
回复
(1)
赶塑坠
2025-12-7 01:59:40
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢分享,学习下。
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
章娅萝
2025-12-7 01:59:40
关注
0
粉丝关注
22
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9950
查看更多
今日好文热榜
146
【节点】[LinearToGammaSpaceExact节点]原
778
Aspire 与 Azure Functions 深度集成:架构
998
阿里Z-Image图像生成模型容器部署
308
痞子衡嵌入式:16MB以上NOR Flash地址模式
661
最新AI换脸软件,全面升级可直播,Mirage下
449
热点 Key 与大 Key 治理——识别、拆分、预
646
Media Extended
323
vlookup的终结者splookup,9个案例讲透查询
851
ROS2之Launch介绍
888
精选 8 个 .NET 开发实用的类库,效率提升
85
精选 8 个 .NET 开发实用的类库,效率提升
575
精选 8 个 .NET 开发实用的类库,效率提升
145
精选 8 个 .NET 开发实用的类库,效率提升
116
精选 8 个 .NET 开发实用的类库,效率提升
609
alist如何将默认布局设置为图片布局
1011
Kali2025.4+Cherry Studio一键配置HexStrik
419
PHP 之高级面向对象编程 深入理解设计模式
417
PHP 之高级面向对象编程 深入理解设计模式
572
升级curl版本,及升级后引起的动态库链接不
297
2025年GEO优化服务商全景对比:五大核心维