主题:栈的数组实现
功能:分别栈的入栈、弹栈、打印操作
提示:运行程序自动进入入栈操作,退出入栈,数组3个ctrl z,然后进入出栈操作,输入非n的任意char字符,继续出栈。输入n结束出栈,整个程序结束。

代码

rewind(stdin);刷新缓冲区
void push(Pstack pstack, int num)入栈
int pop(Pstack pstack)出栈

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 10
#define INCREASE 10//结构体(数组实现栈)
typedef struct
{int *base;//栈底下标int *top;//栈顶下标int length;
}Stack, *Pstack;//初始化
void initial(Pstack pstack)
{pstack->base = NULL;pstack->top = NULL;pstack->length = 0;
}//入栈
void push(Pstack pstack, int num)
{if (pstack->top == NULL)//如果栈为空{pstack->base = (int*)realloc(pstack->base, sizeof(int));//增加一个空间if (!pstack->base){printf("分配内存错误\n");system("pause");}else{pstack->top = pstack->base;*(pstack->top) = num;//赋值pstack->length++;}}else{pstack->base = (int*)realloc(pstack->base, sizeof(int) * (pstack->top - pstack->base + 2));//增加一个空间if (!pstack->base){printf("分配内存错误\n");system("pause");}else{pstack->top = pstack->base + pstack->length - 1;pstack->top++;*(pstack->top) = num;//赋值pstack->length++;}}
}//出栈
int pop(Pstack pstack)
{if (pstack->length == 0){printf("栈为空\n");return -1;}int popper;popper = *(pstack->top);pstack->top--;pstack->length--;return popper;
}//打印
void print(Pstack pstack)
{int length = pstack->length;printf("输出:");for (int i = 0; i < length; i++){printf("%d ", *(pstack->base + i));}//debug输出指针位置printf("\n");printf("top = %p\n", pstack->top);printf("base = %p\n", pstack->base);printf("length = %d\n", length);
}int main()
{int num;Stack stack;Pstack pstack = &stack;//指向stack的指针initial(pstack);printf("入栈:\n");while (scanf("%d", &num) != EOF){push(pstack, num);print(pstack);rewind(stdin);//刷新缓冲区}printf("出栈:输入y/n\n");char checker;while (scanf("%c", &checker) && checker != 'n'){printf("%d已出栈\n", pop(pstack));print(pstack);rewind(stdin);//刷新缓冲区}system("pause");
}

C语言 数据结构 栈的数组实现 realloc函数相关推荐

  1. 11.0、C语言数据结构——栈

    11.0.C语言数据结构--栈 栈的定义:         栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式:         官方定义:栈(stack)是一个 后进先出(Las ...

  2. c语言特殊计算器设计报告,C语言数据结构栈计算器的实现课题设计报告书

    C语言数据结构栈计算器的实现课题设计报告书 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 目录1. 课程设计任务 12. 需求分析 ...

  3. 数据结构与算法分析-用C语言实现栈(数组方式)

    用单链表实现栈并不是最好的方法,因为出入栈都要涉及指针的操作,在一些情况下这些操作可能会花费过长的时间,最简单实现栈的方法还是用数组的方式,用一个int型的数字表示栈顶元素的位置,进栈和出栈只需要对这 ...

  4. [C语言数据结构]栈

    目录 1.栈的定义: 1.2栈的特性: 1.3栈的实现: 1.4代码: 1.4.1结构的声明: 1.4.2栈的初始化: 代码: 1.4.3入栈: 代码: 1.4.4出栈 void StackPop(S ...

  5. C语言数据结构-栈的使用及实例

    本文主要讨论C语言数据结构的又一重要结构--栈 一.栈的理论知识 1. 定义和特点 定义:只允许在一端插入和删除的线性表:允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 特点 ...

  6. c语言栈中符号 的作用是什么,C语言数据结构----栈的应用(程序的符号匹配检测)...

    本节主要讲利用栈来实现一个程序中的成对出现的符号的检测,完成一个类似编译器的符号检测的功能,采用的是链式栈. 一.问题的提出以及解决方法 1.假定有下面一段程序: #include #include ...

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

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

  8. 常见数据结构-栈-队列-数组-链表-哈希表

    数据结构   数据结构是计算机存储.组织数据的方式.是指相互之间存在一种或多种特定关系的数据元素的集合   通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 持续更新,学一个记一个- 栈 ...

  9. 数据结构 - 栈(数组模拟栈操作)

    数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main( ...

最新文章

  1. python编程零基础-如何零基础入门Python编程?
  2. boost::math模块使用 non_finite_num facet 的一个非常简单的例子
  3. vrep和matlab,VREP与MATLAB联合仿真程序--UR5机械臂动力学控制
  4. URL 授权访问另外一种方法,利用 Java 1.1 访问密码保护的 URL
  5. thymeleaf 中文文档
  6. 新书品读《三级网络技术预测试卷与考点解析》,欢迎拍砖、跟砖提建议。
  7. java为什么需要枚举_java – 什么是枚举,为什么它们有用?
  8. Anaconda3安装后,解决cmd中jupyter,pip,python不是内部命令以及jupyter更改默认路径问题
  9. 产品销售的过程中,价值是不断被定义和挖掘的
  10. 计算机组成原理浮点数左移规则,2020考研计算机组成原理知识点:浮点数的表示和运算...
  11. unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。
  12. window下安装sonar
  13. Skype协议分析[0]_安装Skype
  14. 软件开发成本构成及评估
  15. 吴恩达:还没有人能完全理解人工智能,包括谷歌和百度
  16. linux解压rar.gz,Linux tar.gz 、zip、rar 解压 压缩命令
  17. 牛客寒假基础集训营 | Day1 G题—eli和字符串
  18. java定义一个生日类_java定义一个学生类,学生类的数据成员有姓名,学号,出生日期,专业,提供两个以上的...
  19. 关于word文档误点不保存后文档的恢复
  20. 用Xbee实现Arduino之间的无线通信,远程控制小灯

热门文章

  1. Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...
  2. VSCode remote-ssh插件报错“拒绝连接“
  3. [uoj24]缩紧优化
  4. 透过汇编另眼看世界之DLL导出函数调用
  5. c++ template笔记(1)模板函数
  6. Python2 常见问题
  7. JVM性能调优监控工具使用详解
  8. AI视觉在教育场景中的创新应用
  9. Web ML+ WebAssembly 支持实现 Google Meet 背景模糊功能
  10. LiveVideoStackCon 2019北京你来吗?