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但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...
随机推荐
- json 的循环输出
json不能用for-of循环,会报错 可以用for-in循环: var json = {'a':'apple','b':'banana','c':'orange','d':'pear'}; for( ...
- ThreadLocal原理
ThreadLocal类可以看作是当前线程的一个局部变量,只有当前线程可以访问,因此是线程安全的. ThreadLocal内部维护了一个ThreadLocalMap类,ThreadLocalMap是一 ...
- 【NOI2004】郁闷的出纳员(splay)
题面 Description OIER公司是一家大型专业化软件公司,有着数以万计的员工.作为一名出纳员,我的任务之一便是统计每位员工的工资.这本来是一份不错的工 作,但是令人郁闷的是,我们的老板反复无 ...
- H5页面基于接口实现数据交互
对于现在APP开发来说,目前流行的两个方式是原生和H5.就如同之前业界程序猿争论的BS和CS之争一样,业界对于H5和原生也有不小的争论.对于前者的争论在于PC端,后者在于移动端上体现. 那一个APP适 ...
- WordPress菜单“显示选项”无法显示的解决办法
比较新版本的WordPress会出现点击“外观”——“菜单”右上角的“显示选项”无法打开的问题,而老版本的就没有这个问题,后台的其他页面中的这个 功能都可以正常使用,看来问题是因为中文版WordPre ...
- Eclipse中JRE(unbound)问题的一种解决方法
(如果有写的不对的地方,欢迎指正!) 1.检查Java环境变量配置是否有问题 jdk1.8环境变量配置(1.8和8是一个意思) jdk9环境变量配置 注:配置不成功的一种可能是安装多个jdk,解决方法 ...
- MySQL的奇怪的删表数据文件而表照样能打开
MySQL的奇怪的删表数据文件而表照样能打开 author:headsen chen 2017-11-02 17:57:17 现象:删除一个正在运行的mysql数据库的表的数据文件:* ...
- 学习资料分享(Java第一行代码视频)<susmote.com>
17年买了一本书,第一行代码(JAVA),李兴华编写的. 一开始我是按照书本一页一页的啃,一个点一个点的去学,虽然当时学的有些枯燥,但里面的知识点大部分还是弄的懂,只是一次偶然,因为有点质疑书上写的( ...
- vuex的学习笔记
什么是Vuex? vuex是一个专门为vue.js设计的集中式状态管理架构.状态?我把它理解为在data中的属性需要共享给其他vue组件使用的部分,就叫做状态.简单的说就是data中需要共用的属性. ...
- Android 使用shape定义不同控件的的颜色、背景色、边框色
Android 使用shape定义不同控件的的颜色.背景色.边框色 设置按钮的右边框和底边框颜色为红色,边框大小为3dp: 在drawable新建一个 buttonstyle.xml的文件,内容如下: ...