代码部分数组

#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语言,静态栈)相关推荐

  1. c语言设计程序实现顺序冒泡_C语言学习 顺序程序设计

    1.常量和变量 A.常量 (1)整型常量 (2)实型常量 a十进制小数形式 b指数形式 (3)字符常量 a普通字符:用单撇括起来的一个字符,如`a`,`Z`,'3' b转义字符 (4)字符串常量:如& ...

  2. c语言 转换字母 顺序结构,C语言程序设计 顺序结构程序设计 C教学设计3单元V1.0.doc...

    教学设计 河北工业职业技术学院 "C语言程序设计"教学设计 系 别: 计算机技术系 设计教师: 宋铁桥 设计时间: 2017年4月25日 教学内容 第三单元 顺序结构程序设计 授课 ...

  3. c语言int的存储形式,C语言变量的存储类型有3种,即int型、float型和char型

    摘要: 语言变有半裙大头针别样时采用的是大约( )度斜向下别针法.使用椭圆工具拖出正圆形时,存储需要按住的快捷键是在下面的文件格式中,型f型和型常用于网页中的图像制作的是... 语言变有半裙大头针别样 ...

  4. c语言int型按位取反,C语言按位取反快速计算

    先说结论 假设x为signed int,也就是说它的补码表示中第一位表示符号(1:负:0:正),那么~x=-(x+1) 证明 计算机内部使用补码表示,则问题相当于求证:当x为signed int时,( ...

  5. C语言-数据结构-栈(静态栈与动态栈)

    一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独立把赫斌老师教的敲出来,由于动态栈(链表阉割版)的功能很少,我并没有增加什么其它功能, ...

  6. 数据结构:顺序栈基本操作(入栈和出栈)C语言详解(转载)by解学武

    本文为解学武教程的免费章节 什么是顺序栈 顺序栈,即用顺序表实现栈存储结构.通过前面的学习我们知道,使用栈存储结构操作数据元素必须遵守 "先进后出" 的原则,本节就 "如 ...

  7. 顺序栈基本操作(入栈和出栈)C语言详解

    #include <stdio.h> #include <stdlib.h> /*顺序栈基本操作(入栈和出栈)C语言详解栈的具体实现(1)顺序栈(2)链栈栈的应用(1)回退 ( ...

  8. c语言堆栈基本代码入栈出栈_顺序栈基本操作(入栈和出栈)C语言详解

    顺序,即用{1,2,3,4},存储状态如 图 1 顺序表存储 {1,2,3,4} 同样,使用栈存储结构存储 {1,2,3,4},其存储状态如图 2 所示: 图 2 栈结构存储 {1,2,3,4} 通过 ...

  9. C语言 链式栈和顺序栈的实现

    1.简介: 栈(stack)又名堆栈,它是一种运算受限的线性表.限定仅在表尾进行插入和删除操作的线性表.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它是把新元 ...

最新文章

  1. pandas使用groupby.first函数、groupby.nth(0)函数获取每个组中的第一个值实战:groupby.first函数和groupby.nth函数对比(对待NaN的差异)
  2. 反射效果,自己公司内部编码,在text上输入内容后,通过输入内容查询数据库,弹出下拉框
  3. 【DeepLearning工具】Fedora下安装theano
  4. ITK:在向量容器上迭代
  5. 经典卷积神经网络--LeNet-5的详解
  6. 使用JPA + Eclipselink操作PostgreSQL数据库
  7. 【C++学习笔记五】模板
  8. 手把手教你用ECharts画饼图和环形图
  9. 打包HTML文件基础之webpack配置
  10. 带你自学Python系列(四):range、min、max、sum函数
  11. 40-10-010-运维-kafka-2.11-基本操作
  12. APP界面设计临摹模板 |教你ui kit套件要怎么使用呢?
  13. springboot之全局处理异常封装
  14. 计算机应用基础教材提纲,《计算机应用基础》课程教学大纲
  15. MSDN2008下载
  16. Codeforces 1180B
  17. Illustrator插件开发-AI插件-aip格式-第一章 第三小节 Plugin类-StartupPlugin函数
  18. 美团买菜助手来了,自动点击,助你买菜
  19. 大数据(042)机器学习【神经网络】
  20. C语言:习题11-1 输出月份英文名.2021-07-25

热门文章

  1. 【Flask】flask上下文
  2. python中__init__和__new__方法的使用
  3. ARMV8虚拟中断的介绍
  4. Linux shell字符串截取与拼接
  5. [mmu/cache]-ARMV8 MMU内存管理中的Memory attributes和Cache policies
  6. 016 Android之NDK开发
  7. 【YApi】 yapi docker-compose 部署
  8. 同一页面中的多表单提交
  9. 1017 Queueing at Bank (25 分) 【未完成】【难度: 中 / 知识点: 模拟】
  10. python中使用ElementTree 操作XML