s2010编译C++ 链栈的使用
// 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++ 链栈的使用的更多相关文章
- 03链栈_LinkStack--(栈与队列)
#include "stdio.h" #include "stdlib.h" #include "io.h" #include " ...
- 从零开始学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 ...
- java与数据结构(6)---java实现链栈
栈之链式存储结构链栈 链栈 栈的链式存储结构成为链栈.链栈是没有头结点,头结点就是栈顶指针top. 代码结构 package list; public interface Stackable;公共接口 ...
- 链栈之C++实现
链栈是借用单链表实现的栈.其不同于顺序栈之处在于: 1.链栈的空间是程序运行期间根据需要动态分配的,机器内存是它的上限.而顺序栈则是 静态分配内存的. 2.链栈动态分配内存的特性使得它一般无需考虑栈溢 ...
- C++实现链栈的基本操作
之前对顺序栈写了基本操作,认为有必要也动手练练栈的链表实现. 对于链栈,一般不会出现栈满的情况. 链栈头文件定义例如以下: #ifndef CSTOCK_H_ #define CSTOCK_H_ ty ...
- 【小白成长撸】--链栈(C语言版)
// 链栈.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <stdio.h> #include <st ...
- C语言简单实现链栈基本几个功能(适合新手看,大神可指正)
接着上一次的顺序栈,今天我记一下链栈,因为我也是刚学不久,有些地方也稍稍理解不了,所以,一起共勉.我会用我自己结合教材上画的图,争取跟代码一起结合,用文字和图最大化的解释代码,这样的话 ...
- 数据结构——Java实现链栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 链栈是指采用链式存储结构实现的 ...
- C语言实现链栈的初始化&进栈&出栈&读取栈顶元素
/*链表实现栈的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typede ...
随机推荐
- python笔记14
今日内容 带参数的装饰器: flask框架 + django缓存 + 写装饰器实现被装饰的函数要执行N次 模块 os sys time(三种类型) datetime 和 timezone[了解] 内容 ...
- Vagrant 安装使用
先安装虚拟机 https://www.virtualbox.org/ 再安装 https://www.vagrantup.com/ 1.nginxhttp://nginx.org/download/ ...
- Codeforces #617 (Div. 3)B. Food Buying
Mishka wants to buy some food in the nearby shop. Initially, he has ss burles on his card. Mishka ca ...
- Java基础 -2.2
整形数据 保存的范围由小到大:byte.short.int.long 在java中任何的一个整型常量 那么其默认的类型都是int型(只要是整数就是int类型的数据). public class ex1 ...
- 《Java Spring框架》Spring IOC 源码分析
1.下载源码 源码部署:https://www.cnblogs.com/jssj/p/11631881.html 并不强求,最好是有源码(方便理解和查问题). 2. 创建子项目 Spring项目中创建 ...
- 三种方式安装mariadb-10.3.18
安装环境:CentOS Linux release 7.5.1804 (Core) 一.yum安装 官方网站yum配置方法链接:https://mariadb.com/kb/en/library/yu ...
- 「POI2011」Meteors
「POI2011」Meteors 传送门 整体二分,树状数组实现区间修改单点查询,然后注意修改是在环上的. 参考代码: #include <cstdio> #include <vec ...
- mysql path妙用
CREATE TABLE `lc_c_user_path` ( `id` INT ( ) UNSIGNED NOT NULL AUTO_INCREMENT, `user_id` VARCHAR ( ) ...
- Java知识总结:Java反射机制(用实例理解)
概念理解: 反射是指一类应用,它们能够自描述和自控制.也就是说,这类应用通过采用某种机制来 实现对自己行为的描述( self-representation )和检测( examination) ,并能 ...
- winform跳转到bs
private void button7_Click(object sender, EventArgs e) { System.Diagnostics.Process.Start("http ...