c++栈的使用方法
发布网友
发布时间:2022-04-22 04:59
我来回答
共5个回答
热心网友
时间:2023-09-10 01:12
栈呢,是先进后出,比如说一个盒子,它是上面开口,把书放进去,也就是先放的书最后才能拿出来,这是栈的规定,栈在实现的时候,是有个两个指针,一个指针指向的永远是是栈的底部,一个指针是指向的永远是栈顶。每次数据进栈的时候呢,栈顶指针就会上移。数据出栈指针就会下向下移动。
热心网友
时间:2023-09-10 01:12
栈和队列是很有联系的,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
应该没有问题了吧,栈其实不难,队列的使用也很相似。
热心网友
时间:2023-09-10 01:13
#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;
}
热心网友
时间:2023-09-10 01:14
记得先进后出就可以了。
cout<<numbers.top()<<"";是什么意思?其中numbers是一个栈!
栈顶元素。
热心网友
时间:2023-09-10 01:14
问专业人士