CPP 栈 示例
#include<iostream>
#include<stdlib.h>
using namespace std;
typedef struct node
{
int data;
struct node *pNext;
}NODE,*PNODE;
typedef struct stack
{
PNODE pTop;
PNODE pBottom;
}STACK,*PSTACK;
bool ininStack(PSTACK);
bool pushStack(PSTACK , int );
int lengthStack(PSTACK);
bool traverseStack(PSTACK);
bool pop(PSTACK);
bool isempty(PSTACK pS);
void claer(PSTACK pS);
int main()
{
STACK S;
ininStack(&S);
pushStack(&S,1);
pushStack(&S,2);
pushStack(&S,3);
pushStack(&S,4);
lengthStack(&S);
traverseStack(&S);
cout<<"长度为:"<<lengthStack(&S)<<endl;
pop(&S);
traverseStack(&S);
cout<<"长度为:"<<lengthStack(&S)<<endl;
claer(&S);
return 0;
}
bool ininStack(PSTACK pS)//初始化栈
{
PNODE pN = (PNODE)malloc(sizeof(NODE));
if(pN == NULL)
{
cout<<"初始化失败!"<<endl;
exit(-1);
}
pS->pTop = pN;
pS->pBottom = pN;
pS->pBottom->pNext = NULL;
return true ;
}
bool pushStack(PSTACK pS, int val)//压栈
{
PNODE pNew = (PNODE)malloc(sizeof(NODE));
if(pNew == NULL)
{
cout<<"压栈失败!"<<endl;
exit(-1);
}
pNew->data = val;
pNew->pNext = pS->pTop;
pS->pTop = pNew;
return true;
}
bool traverseStack(PSTACK pS)//输出
{
PNODE p = pS->pTop;
while(p->pNext!=NULL)
{
cout<<p->data<<endl;
p=p->pNext;
}
return true;
}
bool isempty(PSTACK pS)//是否为空
{
if(pS->pTop == pS->pBottom)
return true;
else
return false;
}
bool pop(PSTACK pS)//出栈
{
if(isempty(pS))
{
cout<<"栈为空!"<<endl;
return false;
}
cout<<"正在出栈..."<<endl;
PNODE p;
p = pS->pTop;
pS->pTop = p->pNext;
delete(p);
p=NULL;
return true;
}
int lengthStack(PSTACK pS)//计算栈长度
{
int i=0;
PNODE p=pS->pTop;
while(p!=pS->pBottom)
{
i++;
p=p->pNext;
}
return i;
}
void claer(PSTACK pS)//清栈
{
if(isempty(pS))
{
cout<<"此为空栈!"<<endl;
exit(0);
}
PNODE j;
while(pS->pTop != pS->pBottom)
{
j = pS->pTop;
pS->pTop = pS->pTop->pNext;
delete(j);
j = NULL;
}
if(pS->pTop == pS->pBottom)
cout<<"清栈完成!"<<endl;
return ;
}
CPP 栈 示例的更多相关文章
- 应用编排服务之ELK技术栈示例模板详解
日志对互联网应用的运维尤为重要,它可以帮助我们了解服务的运行状态.了解数据流量来源甚至可以帮助我们分析用户的行为等.当进行故障排查时,我们希望能够快速的进行日志查询和过滤,以便精准的定位并解决问题. ...
- CPP链表示例
#include<iostream> #include<stdlib.h> using namespace std; typedef struct Student_data { ...
- (hdu step 8.1.1)ACboy needs your help again!(STL中栈和队列的基本使用)
题目: ACboy needs your help again! Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K ...
- 栈的链式存储 - API实现
基本概念 其它概念详情參看前一篇博文:栈的顺序存储 - 设计与实现 - API实现 这里也是运用了链表的链式存储API高速实现了栈的API. 代码: // linkstack.h // 链式存储栈的A ...
- 顺序栈之C++实现
顺序栈就是用顺序表(数组)实现的栈.其组织形式如下图所示: 下面介绍下我用C++实现的顺序栈,在VC6下调试通过.不足之处还请指正. 1.文件组织 2.ss.h栈类的声明及宏的定义 #ifndef _ ...
- .NET中 类型,对象,线程栈,托管堆在运行时的关系
.NET中 类型,对象,线程栈,托管堆在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and T ...
- [读书心得] .NET中 类型,对象,线程栈,托管堆在运行时的关系
.NET中 类型,对象,线程栈,托管堆 在运行时的关系 The Relationship at Run Time between Types,Objects,A Thread's Stack,and ...
- Java数据结构和算法 - 栈和队列
Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...
- h2engine游戏服务器设计之聊天室示例
游戏服务器设计之聊天室示例 简介 h2engine引擎建群以后,有热心网友向我反馈,想尝试h2engine但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...
随机推荐
- Linux 的特殊变量(2)
1.echo $? 输出结果为0 表示命令执行成功 场景:判断上一个命令是否成功 扩展 0:成功 2 :权限拒绝 1~125:表示运行失败 126:找到命令,但是无法执行 127:未找到要运行的命令 ...
- BitMap位图与海量数据的理解
1. Bit Map算法简介 来自于<编程珠玑>.所谓的Bit-map就是用一个bit位来标记某个元素对应的Value, 而Key即是该元素.由于采用了Bit为单位来存储数据,因此在存储空 ...
- yyb要填的各种总结的坑
已经写好啦的 莫比乌斯反演 杜教筛 动态点分治 斜率优化 Splay 莫队 凸包 旋转卡壳 Manacher算法 Trie树 AC自动机 高斯消元 KMP算法 SA后缀数组 SAM后缀自动机 回文树 ...
- (右偏树)Bzoj2333: [SCOI2011]棘手的操作
题面 戳我 Sol 右偏树滑稽+并查集 再在全局开一个可删除的堆(priority_queue) 注意细节 # include <bits/stdc++.h> # define RG re ...
- [BZOJ1007] [HNOI2008] 水平可见直线 (凸包)
Description 在xoy直角坐标平面上有n条直线L1,L2,...Ln,若在y值为正无穷大处往下看,能见到Li的某个子线段,则称Li为可见的,否则Li为被覆盖的. 例如,对于直线:L1:y=x ...
- 备库搭建后,进入备库报错psql: FATAL: the database system is starting up
备库搭建后,进入备库报错psql: FATAL: the database system is starting up 原因:备库配置文件没有hot_standby = on mast ...
- 【learning】凸包
吐槽 计算几何这种东西qwq一开始真的觉得恶心qwq(主要是总觉得为啥画图那么直观的东西非要写一大堆式子来求qwq真的难受qwq) 但其实静下心来学习的话感觉还是很妙的ovo题目思考起来也十分好玩ov ...
- Hadoop体系架构简介
今天跟一个朋友在讨论hadoop体系架构,从当下流行的Hadoop+HDFS+MapReduce+Hbase+Pig+Hive+Spark+Storm开始一直讲到HDFS的底层实现,MapReduce ...
- python web开发-flask调试模式
使用run()方式可以启动flask应用,但是每次修改代码之后,需要重新启动,这样对于调试就很不太方便.Flask的调试模式可以让代码在每次修改之后自动载入. 有两种方法可以启用flask的调试模式 ...
- c++函数常用
isalnum 判断一个字符是否是字符类的数字或字母isalpha 判断一个字符是否是字母isblank 判断一个字符是否是空白字符(空格,水平制表符,TAB)iscntrl 判断一个控制符(ASCI ...