数据结构与算法之顺序栈C语言实现
顺序栈是一种特殊的顺序表,主要操作是入栈和出栈。将顺序表加一些特定限制,就成了顺序栈。
注:
1.顺序栈C语言实现;
2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善;
3.提供几个简单函数,可自行添加功能;
4.可用C++封装。
顺序栈容量
#define CAPACITY 20 //容量
顺序栈结构体
typedef struct
{
int *m_pHead; //指向数组头
int m_iTop; //栈顶
int m_iCapacity; //容量
}SStack;
核心操作入栈出栈
SStack* createStack();
void push(SStack *pStack, int iElement);
int pop(SStack *pStack);
void showStack(SStack *pStack);
void releaseMem(SStack* pStack);
创建顺序栈
SStack* createStack()
{
SStack *pStack = (SStack*)malloc(sizeof(SStack));
if(!pStack)
{
printf("动态内存分配失败!\n");
return pStack;
} pStack->m_pHead = (int*)malloc(sizeof(int) * CAPACITY);
if(!pStack->m_pHead)
{
printf("动态内存分配失败!\n");
return NULL;
} pStack->m_iTop = -;
pStack->m_iCapacity = CAPACITY; return pStack;
}
入栈
void push(SStack *pStack, int iElement)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return;
} if(pStack->m_iTop == pStack->m_iCapacity - )
{
printf("顺序栈已满!\n");
return;
} pStack->m_pHead[++pStack->m_iTop] = iElement;
}
出栈
int pop(SStack *pStack)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return -;
} if(pStack->m_iTop < )
{
printf("顺序栈元素个数为0!\n");
return -;
} return pStack->m_pHead[pStack->m_iTop--];
}
打印
void showStack(SStack *pStack)
{
if(!pStack || !pStack->m_pHead)
{
printf("顺序栈不存在!\n");
return;
} printf("容量:%d,栈顶:%d,打印元素:\n", pStack->m_iCapacity, pStack->m_iTop);
for(int i = ; i <= pStack->m_iTop; i++)
printf("%d ", pStack->m_pHead[i]); printf("\n");
}
释放内存
void releaseMem(SStack* pStack)
{
if(!pStack)
{
printf("顺序栈不存在!\n");
return;
} if(pStack->m_pHead)
free(pStack->m_pHead); free(pStack);
printf("内存释放成功!\n");
}
数据结构与算法之顺序栈C语言实现的更多相关文章
- 数据结构与算法之顺序表C语言实现
顺序表等相关概念请自行查阅资料,这里主要是实现. 注: 1.顺序表C语言实现: 2.按较简单的方式实现,主要帮助理解,可在此基础上修改,更加完善: 3.提供几个简单函数,可自行添加功能: 4.可用C+ ...
- javascript实现数据结构与算法系列:栈 -- 顺序存储表示和链式表示及示例
栈(Stack)是限定仅在表尾进行插入或删除操作的线性表.表尾为栈顶(top),表头为栈底(bottom),不含元素的空表为空栈. 栈又称为后进先出(last in first out)的线性表. 堆 ...
- JavaScript 数据结构与算法之美 - 栈内存与堆内存 、浅拷贝与深拷贝
前言 想写好前端,先练好内功. 栈内存与堆内存 .浅拷贝与深拷贝,可以说是前端程序员的内功,要知其然,知其所以然. 笔者写的 JavaScript 数据结构与算法之美 系列用的语言是 JavaScri ...
- 数据结构与算法JavaScript (一) 栈
序 数据结构与算法JavaScript这本书算是讲解得比较浅显的,优点就是用javascript语言把常用的数据结构给描述了下,书中很多例子来源于常见的一些面试题目,算是与时俱进,业余看了下就顺便记录 ...
- PHP 程序员学数据结构与算法之《栈》
“要成高手,必练此功”. 要成为优秀的程序员,数据结构和算法是必修的内容.而现在的Web程序员使用传统算法和数据结构都比较少,因为很多算法都是包装好的,不用我们去操心具体的实现细节,如PHP的取栈 ...
- 实现数据结构与算法需要掌握的C语言
我使用C语言并不频繁,一般都是用来实现数据结构与算法,因为面向过程的编程方式容易理解算法的原理,但是呢,如果很长时间没写算法,那么就意味着C语言的某些语法就生疏了,但是总有那么一些,在写算法的时候,特 ...
- 【C#】【数据结构】005-栈:顺序栈
C#数据结构:顺序栈 1.自定义顺序栈结构: /// <summary> /// 顺序栈 /// </summary> /// <typeparam name=" ...
- 【小白成长撸】--顺序栈(C语言版)
// 顺序栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h"//test1.0--栈表仅限Int类型 #include <stdio. ...
- 数据结构(C++)——顺序栈
顺序栈结构 #include<iostream> #define MaxSize 50 using namespace std; typedef int ElemType; typedef ...
随机推荐
- AngularJS 控制器函数
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- uCOS-II消息邮箱的使用
具体使用方法与信号量的方式大同小易. 首先建立一个OS_EVENT结构体(事件控制块)的指针: OS_EVENT *MSBOX; 然后建立消息邮箱,返回值为事件控制块的指针: MSBO ...
- JS JavaScript中的文档碎片 DocumentFragement JS性能优化
文档碎片是什么: 如果我们要在一个ul中添加100个li,如果不使用文档碎片,那么我们就需要使用append经常100次的追加,这会导致浏览器一直不停的渲染,是非常消耗资源的.但是如果我们使用文档碎片 ...
- 记录使用antd时样式不生效的问题
最近在学webpack,就配置了一个react的运行环境,为了偷懒使用了antd npm install antd 之后发现竟然tmd没有样式 谷歌之后发现好多同学都出现了这个问题,好在最后解决了 在 ...
- 序列化表单为json对象,datagrid带额外参提交一次查询 后台用Spring data JPA 实现带条件的分页查询 多表关联查询
查询窗口中可以设置很多查询条件 表单中输入的内容转为datagrid的load方法所需的查询条件向原请求地址再次提出新的查询,将结果显示在datagrid中 转换方法看代码注释 <td cols ...
- C++继承和派生练习(一)--关于从people(人员)类派生出student(学生)类等
. 从people(人员)类派生出student(学生)类 添加属性:班号char classNO[]:从people类派生出teacher(教师)类, 添加属性:职务char principalsh ...
- 【PTA 天梯赛】L2-016. 愿天下有情人都是失散多年的兄妹(深搜)
呵呵.大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人.父母.祖父母.曾祖父母.高祖父母)则不可通婚.本题就请你帮助一对有情人判断一下,他们究竟是否可以成婚? 输入格式: 输入 ...
- VMware ESXi-6.7——安装
前提条件: 下载ESXi-ISO镜像文件 制作启动文件 将服务器调试为U盘启动 进入U盘启动模式 1. 进入ESXi的安装页面 选择要安装的磁盘 选择USB口驱动 设置一个root密码 保存数据提示 ...
- Maria-DB
mysql客户端可用选项: -A, --no-auto-rehash 禁止补全 -u, --user= 用户名,默认为root -h, --host= 服务器主机,默认为localhost -p, - ...
- SpringBoot配置全局自定义异常
不同于传统集中时Springmvc 全局异常,具体查看前面的章节https://www.cnblogs.com/zwdx/p/8963311.html 对于springboot框架来讲,这里我就介绍一 ...