// 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. Typescript 实战 --- (8)高级类型

    1.交叉类型   将多个类型合并成一个类型,新的类型将具有所有类型的特性,适用于对象混用   语法: 类型1 & 类型2 & 类型3 interface CatInterface { ...

  2. preg_replace相关问题

    preg_replace preg_replace 函数执行一个正则表达式的搜索和替换. 语法: preg_replace ( mixed $pattern , mixed $replacement ...

  3. 机器学习之SVM多分类

    实验要求数据说明 :数据集data4train.mat是一个2*150的矩阵,代表了150个样本,每个样本具有两维特征,其类标在truelabel.mat文件中,trainning sample 图展 ...

  4. Caffe2 创建你的专属数据集(Create Your Own Dataset)[9]

    这一节尝试把你的数据转换成caffe2能够使用的形式.这个教程使用Iris的数据集.你可以点击这里查看Ipython Notebook教程. DB数据格式 Caffe2使用二进制的DB格式来保存数据. ...

  5. 【Python数据挖掘】第六篇--特征工程

    一.Standardization 方法一:StandardScaler from sklearn.preprocessing import StandardScaler sds = Standard ...

  6. tcp连接建立和断开

    TCP协议作为传输层主要协议之一,具有面向连接,端到端,可靠的全双工通信,面向字节流的数据传输协议. 1.TCP报文段 虽然TCP面试字节流,但TCP传输的数据单元却是报文段.TCP报文段分为TCP首 ...

  7. 学习不一样的Vue1:环境搭建

    学习不一样的Vue1:环境搭建  发表于 2017-05-31 |  分类于 web前端|  |  阅读次数 11677 首先 首发博客: 我的博客 项目源码: 源码 项目预览: 预览 因为个人的喜好 ...

  8. gitlab两种连接方式:ssh和http配置介绍 --转自 散尽浮华

    gitlab环境部署好后,创建project工程,在本地或远程下载gitlab代码,有两种方式:ssh和http 1)ssh方式:这是一种相对安全的方式 这要求将本地的公钥上传到gitlab中,如下图 ...

  9. Linux centosVMware apache 限定某个目录禁止解析php、限制user_agent、php相关配置

    一.限定某个目录禁止解析php 核心配置文件内容 vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf 先创建.编辑一个php 配置 vim /u ...

  10. XML规范化(DTD)

    无意义的XML 之前说过因为xml没有预设的标签,所以说你怎麽写他一般都不会报错. 所以需要对xml的书写格式进行一些限制,这就引入了DTD 下面的这个xml你可以给book添加各种属性还不会报错,但 ...