c语言 int top,顺序栈(C语言,静态栈)
代码部分数组
#include
#include
#include
#define INITSIZE 4
#define INCREMENT 2
typedef struct stack {
int *base;
int top;
int size;
}STACK, *PSTACK;
void init(PSTACK);
bool is_empty(PSTACK);
bool is_full(PSTACK);
bool push(PSTACK, int);
void traverse(PSTACK);
bool pop(PSTACK, int *);
// 栈有效元素(节点)为top + 1
void clear(PSTACK);
void destroy(PSTACK);
void destroy(PSTACK p)
{
if (is_empty(p))
return;
free(p->base);
p->top = -1;
p->size = 0;
}
// 只是更新栈顶,栈所占内存还在
void clear(PSTACK p)
{
printf("清空栈\n");
if (is_empty(p))
return;
p->top = -1;
}
bool pop(PSTACK p, int *pVal)
{
printf("pop...");
if (is_empty(p)){
printf("栈空!\n");
return false;
}
*pVal = p->base[p->top--];
printf("成功 值为%d\n", *pVal);
return true;
}
void traverse(PSTACK p)
{
printf("遍历(显示顺序栈顶=>栈底)\n");
if (is_empty(p)) {
printf("栈空!\n");
return;
}
for (int i=p->top; i >=0; --i) {
printf("%d\n", p->base[i]);
}
}
bool push(PSTACK p, int val)
{
printf("push %d", val);
if (is_full(p)) {
p->base = (int *)realloc(p->base, sizeof(int) * (INCREMENT + p->size));
p->size += INCREMENT;
if (! p->base) {
printf(" 栈满自动扩展空间失败!\n");
return false;
}
else
printf(" 栈满自动扩展空间");
}
p->base[++p->top] = val;
printf(" 成功\n");
return true;
}
bool is_full(PSTACK p)
{
// 由于是数组下标从0开始
if (p->top == p->size - 1)
return true;
return false;
}
bool is_empty(PSTACK p)
{
if (p->top == -1)
return true;
return false;
}
void init(PSTACK p)
{
p->base = (int *)malloc(sizeof(int) * INITSIZE);
p->top = -1;
p->size = INITSIZE;
}
int main(void)
{
STACK S;
int val;
init(&S);
push(&S, 1);
push(&S, 2);
push(&S, 3);
push(&S, 4);
push(&S, 5);
push(&S, 6);
traverse(&S);
pop(&S, &val);
pop(&S, &val);
pop(&S, &val);
traverse(&S);
clear(&S);
return 0;
}
c语言 int top,顺序栈(C语言,静态栈)相关推荐
- c语言设计程序实现顺序冒泡_C语言学习 顺序程序设计
1.常量和变量 A.常量 (1)整型常量 (2)实型常量 a十进制小数形式 b指数形式 (3)字符常量 a普通字符:用单撇括起来的一个字符,如`a`,`Z`,'3' b转义字符 (4)字符串常量:如& ...
- c语言 转换字母 顺序结构,C语言程序设计 顺序结构程序设计 C教学设计3单元V1.0.doc...
教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第三单元 顺序结构程序设计 授课 ...
- c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型
摘要: 语言变有半裙大头针别样时采用的是大约( )度斜向下别针法.使用椭圆工具拖出正圆形时,存储需要按住的快捷键是在下面的文件格式中,型f型和型常用于网页中的图像制作的是... 语言变有半裙大头针别样 ...
- c语言int型按位取反,C语言按位取反快速计算
先说结论 假设x为signed int,也就是说它的补码表示中第一位表示符号(1:负:0:正),那么~x=-(x+1) 证明 计算机内部使用补码表示,则问题相当于求证:当x为signed int时,( ...
- C语言-数据结构-栈(静态栈与动态栈)
一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独立把赫斌老师教的敲出来,由于动态栈(链表阉割版)的功能很少,我并没有增加什么其它功能, ...
- 数据结构:顺序栈基本操作(入栈和出栈)C语言详解(转载)by解学武
本文为解学武教程的免费章节 什么是顺序栈 顺序栈,即用顺序表实现栈存储结构.通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如 ...
- 顺序栈基本操作(入栈和出栈)C语言详解
#include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...
- c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解
顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...
- C语言 链式栈和顺序栈的实现
1.简介: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...
最新文章
- pandas使用groupby.first函数、groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异)
- 反射效果,自己公司内部编码,在text上输入内容后,通过输入内容查询数据库,弹出下拉框
- 【DeepLearning工具】Fedora下安装theano
- ITK:在向量容器上迭代
- 经典卷积神经网络--LeNet-5的详解
- 使用JPA + Eclipselink操作PostgreSQL数据库
- 【C++学习笔记五】模板
- 手把手教你用ECharts画饼图和环形图
- 打包HTML文件基础之webpack配置
- 带你自学Python系列(四):range、min、max、sum函数
- 40-10-010-运维-kafka-2.11-基本操作
- APP界面设计临摹模板 |教你ui kit套件要怎么使用呢?
- springboot之全局处理异常封装
- 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
- MSDN2008下载
- Codeforces 1180B
- Illustrator插件开发-AI插件-aip格式-第一章 第三小节 Plugin类-StartupPlugin函数
- 美团买菜助手来了,自动点击,助你买菜
- 大数据(042)机器学习【神经网络】
- C语言:习题11-1 输出月份英文名.2021-07-25
热门文章
- 【Flask】flask上下文
- python中__init__和__new__方法的使用
- ARMV8虚拟中断的介绍
- Linux shell字符串截取与拼接
- [mmu/cache]-ARMV8 MMU内存管理中的Memory attributes和Cache policies
- 016 Android之NDK开发
- 【YApi】 yapi docker-compose 部署
- 同一页面中的多表单提交
- 1017 Queueing at Bank (25 分) 【未完成】【难度: 中 / 知识点: 模拟】
- python中使用ElementTree 操作XML