C语言 数据结构 栈的数组实现 realloc函数
主题:栈的数组实现
功能:分别栈的入栈、弹栈、打印操作
提示:运行程序自动进入入栈操作,退出入栈,数组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函数相关推荐
- 11.0、C语言数据结构——栈
11.0.C语言数据结构--栈 栈的定义: 栈是一种重要的线性结构,可以这样讲,栈是前面讲过的线性表的一种具体形式: 官方定义:栈(stack)是一个 后进先出(Las ...
- c语言特殊计算器设计报告,C语言数据结构栈计算器的实现课题设计报告书
C语言数据结构栈计算器的实现课题设计报告书 (13页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 14.9 积分 目录1. 课程设计任务 12. 需求分析 ...
- 数据结构与算法分析-用C语言实现栈(数组方式)
用单链表实现栈并不是最好的方法,因为出入栈都要涉及指针的操作,在一些情况下这些操作可能会花费过长的时间,最简单实现栈的方法还是用数组的方式,用一个int型的数字表示栈顶元素的位置,进栈和出栈只需要对这 ...
- [C语言数据结构]栈
目录 1.栈的定义: 1.2栈的特性: 1.3栈的实现: 1.4代码: 1.4.1结构的声明: 1.4.2栈的初始化: 代码: 1.4.3入栈: 代码: 1.4.4出栈 void StackPop(S ...
- C语言数据结构-栈的使用及实例
本文主要讨论C语言数据结构的又一重要结构--栈 一.栈的理论知识 1. 定义和特点 定义:只允许在一端插入和删除的线性表:允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom). 特点 ...
- c语言栈中符号 的作用是什么,C语言数据结构----栈的应用(程序的符号匹配检测)...
本节主要讲利用栈来实现一个程序中的成对出现的符号的检测,完成一个类似编译器的符号检测的功能,采用的是链式栈. 一.问题的提出以及解决方法 1.假定有下面一段程序: #include #include ...
- C语言-数据结构-栈(静态栈与动态栈)
一.简介 在哔哩哔哩看视频学的,赫斌老师数据结构入门的内容-b站搜索:av6159200(P33),通过学习,能独立把赫斌老师教的敲出来,由于动态栈(链表阉割版)的功能很少,我并没有增加什么其它功能, ...
- 常见数据结构-栈-队列-数组-链表-哈希表
数据结构 数据结构是计算机存储.组织数据的方式.是指相互之间存在一种或多种特定关系的数据元素的集合 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率 持续更新,学一个记一个- 栈 ...
- 数据结构 - 栈(数组模拟栈操作)
数组模拟栈操作 package stack;import java.util.Scanner;public class ArrayStackDemo {public static void main( ...
最新文章
- python编程零基础-如何零基础入门Python编程?
- boost::math模块使用 non_finite_num facet 的一个非常简单的例子
- vrep和matlab,VREP与MATLAB联合仿真程序--UR5机械臂动力学控制
- URL 授权访问另外一种方法,利用 Java 1.1 访问密码保护的 URL
- thymeleaf 中文文档
- 新书品读《三级网络技术预测试卷与考点解析》,欢迎拍砖、跟砖提建议。
- java为什么需要枚举_java – 什么是枚举,为什么它们有用?
- Anaconda3安装后,解决cmd中jupyter,pip,python不是内部命令以及jupyter更改默认路径问题
- 产品销售的过程中,价值是不断被定义和挖掘的
- 计算机组成原理浮点数左移规则,2020考研计算机组成原理知识点:浮点数的表示和运算...
- unix, PF_UNIX, AF_UNIX, PF_LOCAL, AF_LOCAL - 用于本地内部进程通讯的套接字。
- window下安装sonar
- Skype协议分析[0]_安装Skype
- 软件开发成本构成及评估
- 吴恩达:还没有人能完全理解人工智能,包括谷歌和百度
- linux解压rar.gz,Linux tar.gz 、zip、rar 解压 压缩命令
- 牛客寒假基础集训营 | Day1 G题—eli和字符串
- java定义一个生日类_java定义一个学生类,学生类的数据成员有姓名,学号,出生日期,专业,提供两个以上的...
- 关于word文档误点不保存后文档的恢复
- 用Xbee实现Arduino之间的无线通信,远程控制小灯
热门文章
- Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...
- VSCode remote-ssh插件报错“拒绝连接“
- [uoj24]缩紧优化
- 透过汇编另眼看世界之DLL导出函数调用
- c++ template笔记(1)模板函数
- Python2 常见问题
- JVM性能调优监控工具使用详解
- AI视觉在教育场景中的创新应用
- Web ML+ WebAssembly 支持实现 Google Meet 背景模糊功能
- LiveVideoStackCon 2019北京你来吗?