早教吧作业答案频道 -->其他-->
栈的操作设有两个栈S1和S2,按上图的方法共享一个数组的空间。试为此双向栈设计初始化inistack(intv[])、入栈push(intv[],inti,intx)和出栈pop(intv[],inti)的算法,其中i为1或2,用以指示栈号。
题目详情
栈的操作
设有两个栈S1和S2,按上图的方法共享一个数组的空间。试为此双向栈设计初始化inistack(int v[])、入栈push(int v[], int i, int x)和出栈pop(int v[], int i)的算法,其中i为1或2,用以指示栈号。试写一个算法,完成对任何一个栈(S1或S2)的入栈和出栈操作。
【实验要求】
设两个栈按上述方式存储在数组v[n]中,n>=20,从键盘输入8个正整数,存放在S1或S2的栈空间上,并输出S1和S2的元素值。
从键盘输入一个正整数,存放在Si(i=1或i=2)栈上,观察输出信息。
删除Si(i=1或i=2)栈的元素,输出S1和S2的元素值。
设有两个栈S1和S2,按上图的方法共享一个数组的空间。试为此双向栈设计初始化inistack(int v[])、入栈push(int v[], int i, int x)和出栈pop(int v[], int i)的算法,其中i为1或2,用以指示栈号。试写一个算法,完成对任何一个栈(S1或S2)的入栈和出栈操作。
【实验要求】
设两个栈按上述方式存储在数组v[n]中,n>=20,从键盘输入8个正整数,存放在S1或S2的栈空间上,并输出S1和S2的元素值。
从键盘输入一个正整数,存放在Si(i=1或i=2)栈上,观察输出信息。
删除Si(i=1或i=2)栈的元素,输出S1和S2的元素值。
▼优质解答
答案和解析
struct stack
{
int no;
int top;
int bottom;
int *v;
}S1,S2;
int n;
#define N 20
int v[N];
inistack(int v[]){
s1.no=1;
s1.top =s1.bottom =0;
s1.no=2;
s1.top =s1.bottom =n-1;
s1.v=s2.v=v;
}
void push(int v[], int i, int x){
if(i==1){
v[s1.top++]=x;
}
else{
v[s2.top--]=x;
}
}
///////////////////////////////////////////////////////
// 带返回值弹出
int pop(int v[], int i)
{
int cur= 0;
if(i==1){
cur=v[s1.top--];
}
else{
cur=v[s2.top++];
}
return cur;
}
//不带返回值弹出 void pop(int v[],int i)
{
if(i==1){
s1.top--;
}else if(i==2)
{
s2.top++;
}
}
{
int no;
int top;
int bottom;
int *v;
}S1,S2;
int n;
#define N 20
int v[N];
inistack(int v[]){
s1.no=1;
s1.top =s1.bottom =0;
s1.no=2;
s1.top =s1.bottom =n-1;
s1.v=s2.v=v;
}
void push(int v[], int i, int x){
if(i==1){
v[s1.top++]=x;
}
else{
v[s2.top--]=x;
}
}
///////////////////////////////////////////////////////
// 带返回值弹出
int pop(int v[], int i)
{
int cur= 0;
if(i==1){
cur=v[s1.top--];
}
else{
cur=v[s2.top++];
}
return cur;
}
//不带返回值弹出 void pop(int v[],int i)
{
if(i==1){
s1.top--;
}else if(i==2)
{
s2.top++;
}
}
看了 栈的操作设有两个栈S1和S2...的网友还看了以下:
药厂制出的用于实验制药的纯水能喝吗,能长期饮用吗?许多药厂制药或实验都需要用纯水(H2O),就是把自 2020-03-30 …
完全归纳法证明相等∑j=n/2(n+1),j=1到n,这个是提前给出的,可以不用证明在接下来的完全 2020-04-27 …
有句话读不懂23.马太效应“马太效应”一词是美国科学家罗伯特·默顿提出的.他以此来概括这样一种社会 2020-05-13 …
一个商店以批发价购进96元西红柿,如果全部以每斤0.6元卖出,可以赚百分之二十五,可是除了一部分质 2020-05-13 …
一个商店以批发价购进96元西红柿,如果全部全部以每斤0.6元卖出,可以赚二成五,可是除了一部分质量 2020-05-13 …
1.一菜贩从菜市场购进200元的西红柿,如果全部以每千克1.4元卖出,可以赚40%.由于天气的因素 2020-05-13 …
(08年合肥市调研)请阅读下面的文字,完成4一7题。中日古代的“书籍之路”何谓“书籍之路”?这要从 2020-05-16 …
在我国,企业收到国家拨出的用于技术改造的专用拨款时,应暂作( )A.专项应付款B.管理费用C. 2020-05-19 …
应投标人和招标人或项目业主的要求,在项目投标人资格预审阶段开出的用以证明投标人在中标 2020-05-21 …
对消费者个人提供的,用以满足其消费方面所需货币的信用,称为( )。A.消费信用B.国家信用 2020-05-22 …