登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
科技
›
顺序栈的初始化、入栈、出栈、遍历
顺序栈的初始化、入栈、出栈、遍历
[ 复制链接 ]
箝德孜
2025-10-5 14:23:07
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
/**
* @file name : SeqStack.c
* @brief : 该程序通过堆内存实现顺序栈元素的初始化、入栈、出栈、遍历,另外为了提高可移植性,所以顺序栈中
* 数据元素的类型为DataType_t,用户可以根据实际情况修改顺序表中元素的类型
* @author : MINDSETT@163.com
* @date : 2025/7/5
* @version : 1.0
* @note : None
* CopyRight (c) 2025 MINDSETT@163.com All Right Reserved
*/
#include <stdbool.h>
#include <stdlib.h>
#include <stdio.h>
//指定顺序栈中的元素的数据类型,用户可根据需要进行修改
typedef int DataType_t;
//构造一个实现顺序栈的各项参数(栈底地址+栈容量+栈顶元素的下标)的结构体
typedef struct Sequence_Stack
{
DataType_t * bottom; //栈底地址
unsigned int size; //栈容量
int top; //栈顶元素的下标
}SeqStack_t;
/**
* @name : SeqStack_Create
* @brief : 创建一个顺序栈并进行初始化
* @param : None
* @retval : 返回栈底地址
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
SeqStack_t *SeqStack_Create(unsigned int size)
{
//1.利用calloc对顺序栈的管理结构体申请一个内存
SeqStack_t *manager=(SeqStack_t *)calloc(1,sizeof(SeqStack_t));
if (NULL == manager){
perror("calloc memory for manager is failed\n");
exit(-1);
}
//2.对顺序栈管理结构体的所有元素进行初始化
manager->bottom=(DataType_t *)calloc(size,sizeof(DataType_t));
if (NULL == manager->bottom){
perror("calloc memory for Stack is failed\n");
exit(-1);
}
manager->size=size;
manager->top=-1;
return manager;
}
/**
* @name : SeqStack_IsFull
* @brief : 判断顺序栈是否已满
* @param :
* @manager:需要判断的顺序栈
* @retval : 已满返回true,未满返回false
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
bool SeqStack_IsFull(SeqStack_t *manager)
{
return (manager->top+1==manager->size)? true : false;
}
/**
* @name : SeqStack_IsEmpty
* @brief : 判断顺序栈是否为空
* @param :
* @manager:需要判断的顺序栈
* @retval : 为空返回true,不为空返回false
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
bool SeqStack_IsEmpty(SeqStack_t *manager)
{
return (-1==manager->top)? true : false;
}
/**
* @name : SeqStack_Push
* @brief : 入栈
* @param :
* @manager:需要操作的顺序栈
* @Data:需要压入的元素
* @retval : 已满返回true,未满返回false
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
bool SeqStack_Push(SeqStack_t *manager,DataType_t Data)
{
//判断顺序栈是否已满
if ( SeqStack_IsFull(manager) ){
printf("Sequence Stack is Full\n");
return false;
}
//如果顺序栈有剩余空间,则把新元素插入顺序栈的栈顶,并更新管理结构体中最后栈顶的元素下标
manager->bottom[++manager->top]=Data;
return true;
}
/**
* @name : SeqStack_Pop
* @brief : 出栈
* @param :
* @manager:需要操作的顺序栈
* @out:接收弹出的值
* @retval : 成功回true,失败返回false
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
bool SeqStack_Pop(SeqStack_t *manager, DataType_t *out)
{
//判断顺序栈是否为空
if ( SeqStack_IsEmpty(manager) ){
printf("Sequence Stack is empty\n");
return false;
}
//删除一个元素,栈顶元素下标-1
*out=manager->bottom[manager->top--];
return true;
}
/**
* @name : SeqStack_print
* @brief : 遍历顺序栈
* @param :
* @manager:需要操作的顺序栈
* @retval : 成功回true,失败返回false
* @date : 2025/7/5
* @version : 1.0
* @note : None
*/
void SeqStack_print(SeqStack_t *manager)
{
//判断顺序栈是否为空
if ( SeqStack_IsEmpty(manager) ){
printf("Sequence Stack is empty\n");
return;
}
//如果顺序栈不为空,则打印顺序栈的元素
for (int i=0;i<manager->top+1;i++){
printf("Element[%d]=%d\n",i,manager->bottom[i]);
}
printf("\n");
}
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
顺序
初始化
入栈
出栈
遍历
相关帖子
经典面试题目:二叉树遍历
Java学习:Java与C++数组初始化全对比
Mac工作环境初始化
探索表访问方法功能:顺序扫描分析
数据结构之顺序队列
DX12-1-DirectX3D初始化
C语言实现数据结构顺序表
【URP】Unity[相机]渲染顺序
致深度学习小白:一文理解梯度问题与Xavier初始化、He Kaiming初始化
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
安全
经典面试题目:二叉树遍历
2
596
赵淳美
2025-09-11
安全
Java学习:Java与C++数组初始化全对比
2
456
闾丘婉奕
2025-09-26
安全
Mac工作环境初始化
5
219
裒噎
2025-09-29
安全
探索表访问方法功能:顺序扫描分析
1
724
讹过畔
2025-10-07
科技
数据结构之顺序队列
3
909
晖顶蝇
2025-10-22
业界
DX12-1-DirectX3D初始化
0
259
钦娅芬
2025-10-25
安全
C语言实现数据结构顺序表
0
218
事值
2025-11-07
安全
【URP】Unity[相机]渲染顺序
0
228
万妙音
2025-11-23
安全
致深度学习小白:一文理解梯度问题与Xavier初始化、He Kaiming初始化
0
394
套缈
2025-11-27
业界
20251205 - USPD 攻击事件:初始化缺失露破绽,黑客潜伏多日终得手
0
8
唯棉坜
2025-12-06
回复
(4)
丁若云
2025-11-20 13:27:20
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
新版吗?好像是停更了吧。
辈霖利
2025-11-29 16:28:44
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
孓访懔
2025-11-29 19:18:56
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
谢谢分享,辛苦了
万俟谷雪
4 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
鼓励转贴优秀软件安全工具和文档!
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
安全
签约作者
程序园优秀签约作者
发帖
箝德孜
4 天前
关注
0
粉丝关注
20
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994893
kk14977
6845355
3934307807
991122
4
xiangqian
638210
5
宋子
9987
6
闰咄阅
9991
7
刎唇
9993
8
俞瑛瑶
9998
9
蓬森莉
9952
10
匝抽
9986
查看更多