// CTest.cpp : 定义控制台应用程序的入口点。
// #include "stdafx.h"
#include <iostream>
#include <string.h>
#include <stdio.h>
using namespace std; typedef int ElemType;
struct Stack{
ElemType data;
Stack *next;
};
void InitStack(Stack* &HS){
HS = NULL;
}
void Push(Stack* &s,const ElemType &item){//元素item进栈,即插入到栈顶
//为插入元素获取动态节点
Stack * newptr = new Stack;
//给新分配的节点赋值
newptr->data=item;
//向栈顶插入新结点
newptr->next=s;
s=newptr;
}
ElemType Pop(Stack* &s){//删除栈顶元素,并返回
if(s==NULL){
cerr<<"Linked stack is empty!"<<endl;
exit();
}
Stack *p= s;//暂存栈顶结点指针
s = s->next;//使栈顶指针指向下一个节点
ElemType temp = p->data;//暂存原栈顶元素
delete p; //回收原栈顶结点
return temp;
}
ElemType Peek(Stack* &s){//读取栈顶的元素
if(s==NULL){
cerr<<"Linked stack is empty!"<<endl;
exit();
}
return s->data;
}
bool EmptyStack(Stack* &s){//清空栈
return s==NULL;
}
void ClearStack(Stack* &s){
Stack *cp,*np;
cp = s;
while(cp!=NULL){
np = cp->next;
delete cp;
cp = np;
}
s = NULL;
}
int _tmain(int argc, _TCHAR* argv[])
{
Stack *s;
InitStack(s);//初始化栈
int x;//从键盘上输入x
cin >>x;
while(x!=-){
Push(s,x);//向栈中加入数据
cin>>x;
}
while(!EmptyStack(s)){//如果栈不为空
cout<<Pop(s)<<' ';
}
cout<<endl;
ClearStack(s);
system("pause");
return ;
}

输入数据 9 8 1 2 3 5 6 -1 9 3 4

输出数据6 5 3 2 1 8 9

s2010编译C++ 链栈的使用的更多相关文章

  1. 03链栈_LinkStack--(栈与队列)

    #include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...

  2. 从零开始学C++之数据封装与抽象:分别用C和C++来实现一个链栈

    下面通过分别用C和C++来实现一个链栈(链表实现),从中体会数据封装抽象的思想: C语言实现:  C++ Code  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

  3. java与数据结构(6)---java实现链栈

    栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...

  4. 链栈之C++实现

    链栈是借用单链表实现的栈.其不同于顺序栈之处在于: 1.链栈的空间是程序运行期间根据需要动态分配的,机器内存是它的上限.而顺序栈则是 静态分配内存的. 2.链栈动态分配内存的特性使得它一般无需考虑栈溢 ...

  5. C++实现链栈的基本操作

    之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_ ty ...

  6. 【小白成长撸】--链栈(C语言版)

    // 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...

  7. C语言简单实现链栈基本几个功能(适合新手看,大神可指正)

            接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...

  8. 数据结构——Java实现链栈

    一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...

  9. C语言实现链栈的初始化&进栈&出栈&读取栈顶元素

    /*链表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typede ...

随机推荐

  1. 「Luogu P5080 Tweetuzki 爱序列」

    题目大意 给出一些数,需要求出 \(\frac{a_{i+1}}{3}=a_i\) 或 \(a_{i+1}=2 \times a_i\) 时最长的序列 \(a\). 分析 可以发现符合条件的序列 \( ...

  2. subprocess.run()用法python3.7

    def run(*popenargs, input=None, capture_output=False, timeout=None, check=False, **kwargs): "&q ...

  3. Style 继承

    在应用某个主题后,想在此基础上自定义新的样式,可以使用如下方式继承样式. <Style x:Key="ListViewItemStyle" TargetType=" ...

  4. 数据库框架DBUtils

    数据库有关框架 1.框架:提高开发效率.按部就班 2.数据库框架: ORM:Object Relation Mapping 对象关系映射.JavaBean --Object数据库----Relatio ...

  5. 无root开热点教程

    本教程适用于无root类开热点,理论上动态云免等均可使用 热点成功测试方法与免流测试方法相同,一般都为查看ip所在地区 热点端 1.打开个人热点 2.如果是tinyproxy可打开右上角菜单,点击热点 ...

  6. redhat 7.6 VI编辑操作

    模式一: 浏览模式 0 : 光标到行首 $ : 光标到行尾 gg:光标到首行 G:光标到尾行 yy:复制光标所在行 dd:剪切光标所在行,删除行 y11y:复制光标所在行,往下数,一共10行 p:粘贴 ...

  7. luogu P2754 [CTSC1999]家园

    本题是分层图最大流问题,相当于按时间拆点,每个当前点向下一点的下一时间层连点,每一层有n+1个点 #include<bits/stdc++.h> using namespace std; ...

  8. redis5.0版本集群搭建

    模式简介 Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation). Redis 集群不支持那些需要同时处理多个键的 Redis 命令,比如:mget, 因 ...

  9. sql数据库的基本操作

    命令行 1.显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES;2.建立数据库:mysql> CREATE DATABASE 库名;3.建立数据表:mysql& ...

  10. Python查询Redis中的Key

    今日,大哥让我查下项目的在线用户量,听到这个消息顿时懵逼了,在线用户量,这个该怎么查????想到项目中的登陆用户缓存信息Token都存放在Redis中,是不是可以根据Redis中Token的个数大致估 ...