早教吧作业答案频道 -->其他-->
栈的基本运算程序编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:(1)初如化栈S。(2)判断栈S是否非空。(3)进栈。(4)出栈。(5)输出
题目详情
栈的基本运算程序
编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:
(1)初如化栈S。
(2)判断栈S是否非空。
(3)进栈。
(4)出栈。
(5)输出栈S的长度。
编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:
(1)初如化栈S。
(2)判断栈S是否非空。
(3)进栈。
(4)出栈。
(5)输出栈S的长度。
▼优质解答
答案和解析
#include
typedef struct node
{
int num;
struct node *next;
}*link,LINK;
void empty(link top)
{
top=NULL;
}
int pd(link top)
{
if(top==NULL)
{
return 0;
}
else
{
return 1;
}
}
link create(link top,int n)
{
link s;
s=(link)malloc(sizeof(LINK));//分配时要分配一个结构体的空间,而不是仅仅一个指针的空间。
s->num=n;
s->next=top;
top=s;
return top;
}
/*如上个函数,要返回一个指针,否则是不能改变top的值的。因为在函数中只能修改指针指向地址的内容,而它指向的地址是不会改变的。因此要想使指针指向的地址发生变化,要重新返回一个link。出栈的数据放到x中。*/
link outword(link top,int *x)
{
link p;
if(pd(top)==0)
{
printf("underflow");
return top;
}
else
{
p=top;
*x=top->num;
top=top->next;
free(p);
return top;
}
}
void main()
{
link top=NULL;
int n,*x=(int*)malloc(sizeof(int));
//top=(link)malloc(sizeof(LINK));
//empty(top);
printf("进栈\n");
scanf("%d",&n);
//top->num=n;
while(n!=-1)
{
top=create(top,n);
scanf("%d",&n);
}
printf("出栈\n");
while(pd(top)!=NULL)
{
top=outword(top,x);
printf("%d\n",*x);
}
}
已经可以运行。主要问题就是出栈函数的问题,需要你仔细考虑一下。
typedef struct node
{
int num;
struct node *next;
}*link,LINK;
void empty(link top)
{
top=NULL;
}
int pd(link top)
{
if(top==NULL)
{
return 0;
}
else
{
return 1;
}
}
link create(link top,int n)
{
link s;
s=(link)malloc(sizeof(LINK));//分配时要分配一个结构体的空间,而不是仅仅一个指针的空间。
s->num=n;
s->next=top;
top=s;
return top;
}
/*如上个函数,要返回一个指针,否则是不能改变top的值的。因为在函数中只能修改指针指向地址的内容,而它指向的地址是不会改变的。因此要想使指针指向的地址发生变化,要重新返回一个link。出栈的数据放到x中。*/
link outword(link top,int *x)
{
link p;
if(pd(top)==0)
{
printf("underflow");
return top;
}
else
{
p=top;
*x=top->num;
top=top->next;
free(p);
return top;
}
}
void main()
{
link top=NULL;
int n,*x=(int*)malloc(sizeof(int));
//top=(link)malloc(sizeof(LINK));
//empty(top);
printf("进栈\n");
scanf("%d",&n);
//top->num=n;
while(n!=-1)
{
top=create(top,n);
scanf("%d",&n);
}
printf("出栈\n");
while(pd(top)!=NULL)
{
top=outword(top,x);
printf("%d\n",*x);
}
}
已经可以运行。主要问题就是出栈函数的问题,需要你仔细考虑一下。
看了 栈的基本运算程序编写一个程序...的网友还看了以下:
配平下列的各个化学反应的方程式:(1)KMnO4═K2MnO4+MnO2+O2↑(2)Al+CuS 2020-05-02 …
现有1元,5角,2角的人民币各2张,1角的硬币1枚,从中拿出2.5元,你有几种拿法 2020-05-24 …
大一无机化学题,物质结构基础那一章的,由于本人高中没有选化学,所以不太懂,已知某原子的电子可用下列 2020-06-11 …
枇杷20吨,桃子12吨,有甲乙两种货车,甲可装枇杷4吨,桃子1吨,乙可以枇杷桃子各2吨,{1}如何 2020-06-11 …
物理化学题目某复杂反应的表观速率常数k与各基元反应速率常数之间的关系为k=k2(k1/2k4)1/ 2020-06-26 …
某果园收获苹果30吨,柑橘13吨,现计划租用甲,已两种货车共10辆,将这批水果全部运往市场出售,已 2020-06-28 …
等等放题!表示没分了见谅0A0①合并下列各式的同类项。(1)3xy²-4x-3xy²+9x②化简下 2020-07-09 …
3.求下列各比的比值.4.化简下列各比2.8:421/4:1/36.5:1.32/5:4/75.递 2020-07-19 …
第三套人民币21张尾四同号收藏价格后面末尾都是0000,1111,2222,3333这样的10元5 2020-07-24 …
1.将下列指数式化为对数式,对数式化为指数式①2^5=1/32②10g1/264=-6③1g0.0 2020-08-01 …