c++栈的使用方法有哪些?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c++栈的使用方法有哪些?相关的知识,希望对你有一定的参考价值。

我最近想学C++,刚看完谭浩强老师的C++程序设计,又看钱丽萍老师译的那本C++数据结构与程序设计,看到第二章栈,就有些蒙了,希望一些高手能教我一下栈的基本使用方法.
意思我懂,但就是代码不知道怎么写?比如cout<<numbers.top()<<"";是什么意思?其中numbers是一个栈!

栈呢,是先进后出,比如说一个盒子,它是上面开口,把书放进去,也就是先放的书最后才能拿出来,这是栈的规定,栈在实现的时候,是有个两个指针,一个指针指向的永远是是栈的底部,一个指针是指向的永远是栈顶。每次数据进栈的时候呢,栈顶指针就会上移。数据出栈指针就会下向下移动。 参考技术A 栈和队列是很有联系的,numbers.top()中的numbers是一个自定义的栈的名称,top就是抽取第一个元素。下面我举个例子,头文件就不写了,我直接写代码:

stack<int>number;定义一个栈,名称是number,而且是该栈是存放整型数值。
.......
number.push(10);
number.push(20);
number.push(30);//将10,20,30分别压进栈里
.......
cout<<number.pop()<<endl;//输出栈顶元素10
number.pop();//删除栈顶元素10,栈顶元素变为20
cout<<number.pop()<<endl;//输出栈顶元素20

输出结果:
10
20

应该没有问题了吧,栈其实不难,队列的使用也很相似。
参考技术B #include "stdafx.h"
#include "iostream.h"
#include "stdlib.h"
#define
MAXSIZE 2 //常量的定义
//给int起一个datatype的别称,及datatype就是int
typedef int datatype;//定义常量
typedef struct /结构体定义
stackstruct

datatype stack[MAXSIZE];
int
top;
Stack;
Stack *s;
void InitStack(Stack *s)

s->top=-1;



int Empty (Stack *s)

if(s->top<0)
return
(1);
else
return (NULL);//return (false);



int Full(Stack *s)

if((s->top)>=(MAXSIZE-1))

return (1);
else
return (NULL);



Stack * InStack(Stack * s,datatype
x)

if(Full(s))


printf("栈满,不能向栈中插入数据\n");

return(false);


else


s->top++;
printf("输入一个数据值:\n");

scanf("%d",&x);
s->stack[s->top]=x;

printf("输入的数据是:%d\n",s->stack[s->top]);
return
(s);



datatype OutStack(Stack *s,datatype
x)

if(Empty(s))


printf("栈空,不能从栈中删除数据\n");
return
(NULL);

else


x=s->stack[s->top];

printf("从栈中删除的数据是:%d\n",s->stack[s->top]);

s->top--;
return(x);




void main ()

datatype x=10;
s=(Stack *)malloc
(sizeof(Stack));
InitStack( s);
printf("已经对栈进行了初始化\n");
int n;
while
(1)


printf("//////////////////////////////////////////////////\n\n");

printf(" 请选择您要实现的操作:\n");

printf(" 输入0: 退出\n
输入1:向栈中插入数据\n 输入2:从栈中删除数据\n ") ;

printf("//////////////////////////////////////////////////\n\n");

printf("选择:");

scanf("%d",
&n);

if((n!=0)&&(n!=1)&&(n!=2))


printf("输入错误\n");

continue;


switch ( n
)

case 0: exit (0);
case 1:
InStack( s, x); break;
case 2: OutStack( s, x);
break;
参考技术C 记得先进后出就可以了。
cout<<numbers.top()<<"";是什么意思?其中numbers是一个栈!
栈顶元素。
参考技术D 问专业人士

c++ 标准库函数都有哪些?

所有的库函数及作用

C++标准库函数
c++程序通常可以调用标准c++库中的大量函数。这些函数完成一些基本的服务,如输入和输出等,同时也为一些经常使用的操作提供了高效的
实现代码。这些函数中含有大量的函数和类定义,以帮助程序员更好地使用标准c++库。
标准c++库包含以下内容:
<algorithm>,<bitset>,<complex>,<deque>,<exception>,<fstream>,<functionl>,<iomanip>,<ios>,<iosfwd>,<iostream>,<isteam>,<iterat
or>,<limits>,<list>,<locale>,<map>,<memory>,<numeric>,<ostream>,<queue>,<set>,<sstream>,<stack>,<stdxcept>,<streambuf>,<strin
ig>,<strstream>,<utility>,<valarray>,<vactor>,<cassert>,<cctype>,<cerron>,<cfloat>,<ciso646>,<climits>,<clocale>,<cmath>,<cse
tjmp>,<csignal>,<cstdrag>,<cstddef>,<cstdio>,<cstdlibn>,<cstring>,<ctime>,<cwchar>,<iso646.h>和<cwchar.h>
标准c++库的详细消息均在其对应的头文件进行了说明。主要标准c++库头文件如下所示。其中13项为标准模板库(STL),在其说明文字的前面标有(STL)的为标准模板库。
<algorithm>---(STL)用于定义实现常用、实用算法的大量模板
<bitset>----- 用于定义官位位集合的模板类
<cassert>-----用于在程序执行时执行断言
<cctype>-----用于对字符进行分类
<cerrno>-----用于测试有库函数提交的错误代码
<cfloat>------用于测试浮点类型属性
<cios646>----用于在ISO646变体字符集中编程
<climits>-----用于测试整数类型属性
<clocale>-----用于使程序适应不同的文化风俗
<cmath>———用于计算常用的数学函数
<complex>-----用于定义支持复杂算法的模板类
<csetjmp>-----用于执行非局部的goto语句
<csignal>------用于控制各种异常情况
<cstdrag>-----用于访问参数数量文化的函数
<cstdarg>-----用于访问参数数量变化的函数
<cstddef>----用于定义实用的类型和宏
<cstdio>-----用于执行输入和输出
<cstdlib>----用于执行同一操作的不同版本
<string>-----用于处理几种不同的字符串类型
<ctime>------用于在几种不同的时间和日期格式间进行转换
<cwchar>----用于处理宽流(wide stream)和字符串
<cwctype>---用于对宽字符(wide character是)分类
<deque>---(STL)用于定义实现双向队列容器的模板类
<exception>---用于定义控制异常处理的几个函数
<fstream>-----用于定义处理外部文件的几个iostream模板类
<functional>-----(STL)用于定义几个模板,该模板将帮助在<algorithm>和<numeric>中定义的 模板构造谓词
<iomapip>---- 用于声明一个带有参数的iostreams控制器
<ios>-----用于定义用作大量iostreams类的基类的模板类
<iosfwd>-----用于定义iostreams模板类(在需要定义之前)
<iostream>---用于声明处理标准流的iostreams对象
<istream>---用于定义执行析取操作的模板类
<iterator>----(STL)用于定义帮助定义和管理迭代器的模板
<limits>---用于测试数字类属性
<list>---(STL)用于定义实现list容器的模板类
<locale>----用于定义在iostreams类中控制与特定位置相关的行为的类和模板
<map>------(STL)用于定义实现关联容器的模板类
<memoery>-----(STL)用于定义对不同容器分配和释放内存的模板
<numeric>-----(STL)用于定义实现实用数字函数的模板
<ostream>----用于定义管理字符串容器的iostreamas模板类
<queque>----(STL)用于实现队列容器的模板类
<set>-----(STL)用于定义实现只有唯一元素的关联容器的模板类
<sstream>----用于定义管理字符串容器的iostreams模板类
<stack>-----(STL)用于定义实现堆栈容器的模板类
<stdexcept>----用于定义提交异常的类
<streambuf>----用于定义为iostreams操作分配缓冲区的模板类
<string>------用于定义是实现字符串容器的模板类
<strstream>-----用于定义处理非内存(in-memory)字符系列的iostreams类
<utility>-----(STL)用于定义通用工具的模板
<valarray>----用于定义支持值(value-oriented)数组的类和模板类
<vector>----(STL)用于定义实现向量容器的模板类
标准c++库还包括18个标准C库中的头文件,但其中有些变化。我们暂时不讨论,这些头文件为:
<assert.h>---用于在程序运行时执行断言
<ctype.h>----用于对字符分类
<errno.h>----用于测试用库函数提交的错误代码
<float.h>----用于测试浮点类型属性
<ios646.h>-----用于在IOS646变体字符集中编程
<limits.h>-----用于测试整数类型属性
<locale.h>-----用于适应不同的文化习俗
<math.h>----用于计算常见的数学函数
<setjmp.h>----用于执行非局部的goto语句
<signal.h>----用于控制各种异常情况
<stdrag.h>-----用于访问参数数量变化的函数
<stddef.h>-----用于定义类型和宏
<stdio.h>------用于执行输入和输出
<stdlib.h>------用于执行各种操作
<string.h>-----用于处理字符串
<time.h>-------用于在不同的时间和日期格式之间转换
<wcchar.h>-----用于处理宽流(wide stream)和字符类
<wctype.h>-----用于对宽字符(wide character)分类

原载地址:http://blog.csdn.net/wh0826/article/details/5380634
分类: C & C++

参考资料:原载地址:http://blog.csdn.net/wh0826/article/details/5380634

参考技术A 1.输入输出函数 #include<iostream.h>
2.数学函数 #include<cmath.h>;
3.字符串判断函数 #include<ctype.h>
4.字符串相关函数 #include<stdlib.h>或<string.h>
5.随机数相关函数 #include<ctime.h>
.......
参考技术B 太多了,无法在此枚举,你可以找编译器的所有头文件,看看相关的库函数声明。

以上是关于c++栈的使用方法有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

Java中有没有像C++中那种包含一个栈的头文件< stack >就可以用栈的一些出栈入栈的函数的做法?

栈的C++实现

数据结构实验二 栈的应用——迷宫求解问题(c++版本)

C++获得程序的调用栈的几种方法

Java中栈的使用

c++堆与栈的简单认识