数据结构C语言版-栈
#include <stdio.h> #include <stdlib.h> #include <math.h> #include <iostream> using std::cout; typedef int SElemType; const int STACK_INIT_SIZE = 100; const int STACKINCREMENT = 10; typedef struct { SElemType *base; SElemType *top; int stacksize; } SqStack; bool InitStack(SqStack &S); bool DestoryStack(SqStack &S); bool ClearStack(SqStack &S); bool StackEmpty(SqStack S); int StackLength(SqStack S); bool GetTop(SqStack S, SElemType &e); bool Push(SqStack &S, SElemType e); bool Pop(SqStack &S, SElemType &e); bool StackTraverse(SqStack S); int main() { SqStack s; InitStack(s); Push(s, 5); Push(s, 6); Push(s, 7); Push(s, 8); int a; Pop(s, a); cout << a << std::endl; GetTop(s, a); cout << a << std::endl; if (StackEmpty(s)) { printf("is empty!\n"); } else { printf("is not empty!\n"); } SElemType b; printf("%d\n", StackLength(s)); StackTraverse(s); while (!StackEmpty(s)) { int b; Pop(s, b); cout << b << std::endl; } ClearStack(s); DestoryStack(s); } bool StackTraverse(SqStack S) { if (S.top == S.base) { return false; } while (S.base < S.top) { printf("%d\t", *(S.base++)); } printf("\n"); return true; } bool DestoryStack(SqStack &S) { free(S.base); S.base = NULL; return true; } bool ClearStack(SqStack &S) { S.top = S.base; return true; } int StackLength(SqStack S) { if (S.base == S.top) { return 0; } return (int) (S.top - S.base); } bool StackEmpty(SqStack S) { if (S.top == S.base) { return true; } return false; } bool InitStack(SqStack &S) { S.base = (SElemType *) malloc(sizeof(SElemType) * STACK_INIT_SIZE); if (!S.base) { exit(OVERFLOW); } S.top = S.base; S.stacksize = STACK_INIT_SIZE; return true; } bool GetTop(SqStack S, SElemType &e) { if (S.top == S.base) { return false; } e = *(S.top - 1); return true; } bool Push(SqStack &S, SElemType e) { if (S.top - S.base >= S.stacksize) { S.base = (SElemType *) realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SElemType)); if (!S.base) { exit(OVERFLOW); } S.top = S.base + S.stacksize; S.stacksize += STACKINCREMENT; } *S.top++ = e; return true; } bool Pop(SqStack &S, SElemType &e) { if (S.top == S.base) { return false; } e = *--S.top; return true; }
数据结构C语言版-栈的更多相关文章
- c++学习书籍推荐《清华大学计算机系列教材:数据结构(C++语言版)(第3版)》下载
百度云及其他网盘下载地址:点我 编辑推荐 <清华大学计算机系列教材:数据结构(C++语言版)(第3版)>习题解析涵盖验证型.拓展型.反思型.实践型和研究型习题,总计290余道大题.525道 ...
- 数据结构C语言版 有向图的十字链表存储表示和实现
/*1wangxiaobo@163.com 数据结构C语言版 有向图的十字链表存储表示和实现 P165 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h> ...
- 数据结构C语言版 表插入排序 静态表
数据结构C语言版 表插入排序.txt两个人吵架,先说对不起的人,并不是认输了,并不是原谅了.他只是比对方更珍惜这份感情./* 数据结构C语言版 表插入排序 算法10.3 P267-P270 编译 ...
- 数据结构C语言版 弗洛伊德算法实现
/* 数据结构C语言版 弗洛伊德算法 P191 编译环境:Dev-C++ 4.9.9.2 */ #include <stdio.h>#include <limits.h> # ...
- 《数据结构-C语言版》(严蔚敏,吴伟民版)课本源码+习题集解析使用说明
<数据结构-C语言版>(严蔚敏,吴伟民版)课本源码+习题集解析使用说明 先附上文档归类目录: 课本源码合辑 链接☛☛☛ <数据结构>课本源码合辑 习题集全解析 链接☛☛☛ ...
- 【数据结构(C语言版)系列二】 栈
栈和队列是两种重要的线性结构.从数据结构角度看,栈和队列也是线性表,但它们是操作受限的线性表,因此,可称为限定性的数据结构.但从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型. 栈的定 ...
- 深入浅出数据结构C语言版(8)——后缀表达式、栈与四则运算计算器
在深入浅出数据结构(7)的末尾,我们提到了栈可以用于实现计算器,并且我们给出了存储表达式的数据结构(结构体及该结构体组成的数组),如下: //SIZE用于多个场合,如栈的大小.表达式数组的大小 #de ...
- 深入浅出数据结构C语言版(7)——特殊的表:队列与栈
从深入浅出数据结构(4)到(6),我们分别讨论了什么是表.什么是链表.为什么用链表以及如何用数组模拟链表(游标数组),而现在,我们要进入到对线性表(特意加了"线性"二字是因为存在多 ...
- 数据结构(C语言版)顺序栈相关算法的代码实现
这两天完成了栈的顺序存储结构的相关算法,包括初始化.压栈.出栈.取栈顶元素.判断栈是否为空.返回栈长度.栈的遍历.清栈.销毁栈.这次的实现过程有两点收获,总结如下: 一.清楚遍历栈的概念 栈的遍历指的 ...
随机推荐
- C# 异步示例代码
在 使用BackgroundWorker组件 一文中,阐述了在Winform编程中,使用BackgroundWorker组件实现异步调用,本文主要讲述利用委托实现异步. 以下描述摘抄于MSDN: 异步 ...
- jQuery之animate中的queue
queue.dequeue clearQueue 清空 用队列完成之前动画的操作:
- python表格导出--xlwt的使用
xlwt可以用来导出excel表,下面介绍一下它的用法: 1. 安装xlwt模块 pip install xlwt 2. 使用xlwt模块:后端接口编写 import xlwt #导出表格接口 def ...
- 需要重写URL但请求的目录不存在报404
用的是asp.net webform,在global.asax的application_beginrequest中写的代码 很简单的一个需求,在url中输入http://www.test.com/lc ...
- dotnet不是内部或外部的命令,也不是可运行的程序或批处理文件
该问题是由于电脑环境变量配置错误所导致.最初在网上查找的方法,是在系统环境变量path中添加以下语句: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\ ...
- 使用电脑ODBC测试数据库连接方法
使用电脑ODBC测试数据库连接方法 一.打开电脑的控制面板——管理工具——数据源(ODBC),在用户dsn页面中点击添加按钮,选择IBM DB2 ODBC DRIVER,点击完成. 二.在弹出的配置页 ...
- [Solution] 969. Pancake Sorting
Difficulty: Medium Problem Given an array A, we can perform a pancake flip: We choose some positive ...
- 《CSAPP》读书笔记
第一章 第二章 第三章 第四章 第五章 第六章 第七章 链接 可重定位目标文件 符号和符号表 符号解析 第八章 第九章 虚拟存储器 虚拟存储器 页表.页命中.缺页 地址翻译 第十章 第十一章 第十二章 ...
- mysql出现“Incorrect key file for table”解决办法
本文来自: https://www.cnblogs.com/zjoch/archive/2013/08/19/3267131.html 今天mysql突然出现以下错误: mysql> selec ...
- Vue的从入门到放弃
此贴仅记录vue学习路程中遇见的大大小小,形形色色的问题 1. vue自动打开浏览器配置: 当使用vue 脚手架搭建项目后启动npm run dev,会出现 但是不会自动打开浏览器的,这时候去con ...