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但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...
随机推荐
- 对于多线程下Servlet以及Session的一些理解
今天,小伙伴突然问到了Servlet是不是线程安全的问题.脑子当时一卡壳,只想到了单实例多线程.这里做一些总结. Servlet体系是建立在Java多线程的基础之上的,它的生命周期是由Tomcat来维 ...
- numpy使用总结
numpy是Python中常用的数据处理库的基础库,一般通过import numpy as np的方式导进 科学计算库numpy 在numpy中,主要的数据结构是ndarray,在numpy中称为数组 ...
- 【网络流24题】最长k可重区间集(费用流)
[网络流24题]最长k可重区间集(费用流) 题面 Cogs Loj 洛谷 题解 首先注意一下 这道题目里面 在Cogs上直接做就行了 洛谷和Loj上需要判断数据合法,如果\(l>r\)就要交换\ ...
- [UOJ207]共价大爷游长沙
UOJ sol 这题真是太神啦! 对于S集合中的每个点对,给他们随机附上一个相同权值. 两个点在边(x,y)的两侧当且仅当一个点在x的子树中,另一个点不在x的子树中(假设x是y的儿子) 维护一下子树点 ...
- Zabbix 微信报警Python版(带监控项波动图片)
#!/usr/bin/python # -*- coding: UTF- -*- #Function: 微信报警python版(带波动图) #Environment: python import ur ...
- python 数据结构简介
栈(stack) 定义: 数据集合,只能在一端(首尾)进行删除和插入的列表. 特点: 后进先出(LIFO) 典型作用: 括号匹配:左括号进栈,右括号跟左括号对应则出栈,例如:(({{[]}}))匹配 ...
- jQuary学习の二の语法
jQuery 语法是通过选取 HTML 元素,并对选取的元素执行某些操作.基础语法: $(selector).action() 美元符号定义 jQuery 选择符(selector)"查询& ...
- 删除项目中的.pyc文件
在编写python项目的时候,往往会生成很多的.pyc文件,但是在我们提交代码的时候这些.pyc文件又是不必要的,所以需要对项目里面的.pyc文件进行清理.再此,经过我的查阅资料和尝试,分享出以下方法 ...
- oracle 10g数据库下的 XDB组件的重新安装
emmmm,这是一个不做死就不会的过程!!! 今天在导出数据库时,遇到了报错信息,其实开发说这个报错没关系了,但作死如楼主,一定要把这个错给解决了,然后就有了下面的作死过程. 错误关键字是:packa ...
- SIMD---SSE系列及效率对比
SSE(即Streaming SIMD Extension),是对由MMX指令集引进的SIMD模型的扩展.我们知道MMX有两个明显的缺点: 只能操作整数. 不能与浮点数同时运行(MMX使用FPU寄存器 ...