早教吧作业答案频道 -->其他-->
栈的操作设有两个栈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...的网友还看了以下:
1.给加点字选择正确的读音,用V”标出,再带到文中读一读。大夫(dàdài)盛情(shèngshè 2020-05-13 …
matlab 一维数组中的连续三个数构成坐标,画出空间分布比如I(n+1)=mod(65539*I 2020-05-13 …
这个程序要求是输出m个数中任取n个数的所有组合,我要抓狂了==#include;#includei 2020-06-28 …
下列加点的字,注音全部正确的一组是()。A.寒濑(lài)苔藓(tāi)万籁(lài)皑皑白雪(á 2020-06-28 …
下列词语中加下划线的字的注音完全正确的一组是A.挑剔tī缱绻quǎn稗bài官改弦xuán更张B. 2020-06-28 …
(A/P,i,n)=(A/F,i,n)+i或(A/F,i,n)=(A/P,i,n)-i我已经知道怎 2020-07-23 …
求证e^i(4π/n)+e^i(8π/n)+...+e^i4(n-1)π/n+e^i(4nπ/n)= 2020-11-01 …
样本容量为n,组数为P,第i组的频数为k,则该组频率为,若前i-1组的累积频率(前n-1组的频率之和 2020-12-23 …
在资金时间价值计算时,i和n给定,下列等式中正确的有().A.(F/A,i,n)=[(P/F,i,n 2021-01-14 …
1、在资金时间价值计算时,i和n给定,下列等式中正确的有?为什么?1、A(F/A,i,n)=[(P/ 2021-01-14 …