c++栈的使用方法
答案:5 悬赏:40 手机版
解决时间 2021-02-26 12:24
- 提问者网友:贪了杯
- 2021-02-25 13:26
c++栈的使用方法
最佳答案
- 五星知识达人网友:山君与见山
- 2021-02-25 14:59
#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;
}
#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;
}
全部回答
- 1楼网友:青尢
- 2021-02-25 18:06
栈和队列是很有联系的,numbers.top()中的numbers是一个自定义的栈的名称,top就是抽取第一个元素。下面我举个例子,头文件就不写了,我直接写代码:
stacknumber;定义一个栈,名称是number,而且是该栈是存放整型数值。
.......
number.push(10);
number.push(20);
number.push(30);//将10,20,30分别压进栈里
.......
cout< number.pop();//删除栈顶元素10,栈顶元素变为20
cout< 输出结果:
10
20
应该没有问题了吧,栈其实不难,队列的使用也很相似。
stack
.......
number.push(10);
number.push(20);
number.push(30);//将10,20,30分别压进栈里
.......
cout<
cout<
10
20
应该没有问题了吧,栈其实不难,队列的使用也很相似。
- 2楼网友:低血压的长颈鹿
- 2021-02-25 16:37
问专业人士
- 3楼网友:野味小生
- 2021-02-25 15:53
记得先进后出就可以了。
cout< 栈顶元素。
cout<
- 4楼网友:时间的尘埃
- 2021-02-25 15:37
栈呢,是先进后出,比如说一个盒子,它是上面开口,把书放进去,也就是先放的书最后才能拿出来,这是栈的规定,栈在实现的时候,是有个两个指针,一个指针指向的永远是是栈的底部,一个指针是指向的永远是栈顶。每次数据进栈的时候呢,栈顶指针就会上移。数据出栈指针就会下向下移动。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯