登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
签到
每天签到奖励2-10圆
导读
排行榜
TG频道
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
VIP申请
VIP网盘
网盘
联系我们
发帖说明
每日签到
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
科技
›
顺序栈的初始化、入栈、出栈、遍历
顺序栈的初始化、入栈、出栈、遍历
[ 复制链接 ]
箝德孜
2025-10-5 14:23:07
/**
* @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");
}
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
顺序
初始化
入栈
出栈
遍历
相关帖子
【LeetCode 102】算法:二叉树的层序遍历
栈的两种存储结构(顺序存储和链式存储)
Node.js环境和antd初始化项目
【LeetCode 105】算法:从前序与中序遍历序列构造二叉树
【渲染管线】UnityURP[渲染顺序]与[层级]
Python 中多个装饰器执行顺序验证
经典面试题目:二叉树遍历
Java学习:Java与C++数组初始化全对比
Mac工作环境初始化
探索表访问方法功能:顺序扫描分析
vip免费申请,1年只需15美金$
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
科技
【LeetCode 102】算法:二叉树的层序遍历
0
874
计海龄
2025-08-07
业界
栈的两种存储结构(顺序存储和链式存储)
0
670
骂治并
2025-08-10
安全
Node.js环境和antd初始化项目
0
814
致掣
2025-08-25
科技
【LeetCode 105】算法:从前序与中序遍历序列构造二叉树
0
225
松菊
2025-08-27
科技
【渲染管线】UnityURP[渲染顺序]与[层级]
0
85
损注
2025-08-30
业界
Python 中多个装饰器执行顺序验证
0
294
接快背
2025-09-06
安全
经典面试题目:二叉树遍历
0
537
赵淳美
2025-09-11
安全
Java学习:Java与C++数组初始化全对比
1
402
闾丘婉奕
2025-09-26
安全
Mac工作环境初始化
0
162
裒噎
2025-09-29
安全
探索表访问方法功能:顺序扫描分析
0
640
讹过畔
2025-10-07
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
业界
安全
签约作者
程序园优秀签约作者
发帖
箝德孜
2025-10-5 14:23:07
关注
0
粉丝关注
19
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
anyue1937
9994888
dage888
999994
3934307807
993678
4
富账慕
10004
5
刎唇
9993
6
柴古香
9989
7
烯八
9972
8
匝抽
9986
9
筒濂
9977
10
孙淼淼
9983
查看更多