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但是没有服务器开发经验觉得无从入手,希望我能提供一个简单明了的示例.由于前一段时间工作实在忙碌 ...
随机推荐
- 在vue中使用css modules替代scroped
前面的话 css modules是一种流行的模块化和组合CSS的系统. vue-loader提供了与css modules的集成,作为scope CSS的替代方案.本文将详细介绍css modules ...
- CSS3动画--过渡效果
CSS3动画--过渡效果 transition 设置四个过渡属性 transition-property 过渡的名称 tr ...
- RobotFramework自动化测试框架的基础关键字(二)
1.1.1 如何快速查询某一个关键字的API说明 鼠标选中我们关键字,同时按住Ctrl+Alt键,即可出来该关键字的帮助API以及使用示例 1.1.2 如何快速补全关键字 ...
- Python类变量和实例变量
class TestClass(object): val1 = 100 #类变量 def __init__(self): self.val2 = 200 #实例变量 ...
- opacity 与rgba区别
rgba(r,g,b,a) rgba(r,g,b,a) r,g,b分别是颜色r g b的值(0-255),a表示透明度(0-1). opacity: value: opacity: value; va ...
- C# QQ邮箱注册,以及数秒
一. 这是前台需要的东西 <asp:TextBox ID="Textemail" runat="server" CssClass="nonein ...
- Python包和版本管理的最好工具----pipenv
pipenv 是Kenneth Reitz大神的作品,提供Python的各个版本间的管理,各种包管理.个人觉得是virtualenv pip等工具的合体. pipenv主要有以下特性: (1)以前我们 ...
- Eslint报错整理与解决方法(持续整理)
1.'Unexpected tab character' 字面意思理解呢就是意想不到的制表符,当时出现的时候就是我习惯的使用Tab键去打空格,但是eslint默认不认可Tab,所以解决方法很简单: 在 ...
- GeoJSON C#判断某一点是否在某一区域范围之内
GeoJSON是一种对各种地理数据结构进行编码的格式,基于Javascript对象表示法的地理空间信息数据交换格式.GeoJSON对象可以表示几何.特征或者特征集合.GeoJSON支持下面几何类型:点 ...
- Linq to sharepoint
一.Linq to SharePoint 首先Linq to SharePoint编程语言 C# 和 Microsoft Visual Basic .NET 的一个功能,编译器是 Visual Stu ...