早教吧作业答案频道 -->其他-->
栈的基本运算程序编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:(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);
}
}
已经可以运行。主要问题就是出栈函数的问题,需要你仔细考虑一下。
看了 栈的基本运算程序编写一个程序...的网友还看了以下:
下列关于会计基本假设的表述中正确的有( )。A.会计核算的基本假设包括会计主体、持续经营、会计 2020-05-19 …
J.Martin在论述战略数据规划方法时明确指出,系统规划的基础性内容包括()。这几方面的基础建设得 2020-05-24 …
以下叙述中,哪一条不是孟德尔获得成功的原因()A.正确假设了等位基因控制相对性状B.正确选用了试验 2020-06-10 …
会计题目请教收到款项的当期不确认收入,而在实际发出商品时确认收入体现会计基本假设是某企业将预收的货 2020-07-03 …
栈的基本运算程序编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性 2020-07-10 …
栈的操作设有两个栈S1和S2,按上图的方法共享一个数组的空间。试为此双向栈设计初始化inistac 2020-07-10 …
2008年3月17日消息透露,宝钢兼并韶钢和广钢后,将在湛江投入大约600亿建设1000万吨级以上的 2020-11-12 …
英语翻译摘要本设计为新建公路设计.结合沿线自然地理条件和技术指标,进行合理路线选择.在确定路线方案后 2020-11-21 …
下列说法正确的是()A.狭义相对论的两条基本假设是相对性原理与光速不变原理B.狭义相对论的两条基本假 2020-12-08 …
“十五”期间,国家对西藏经济建设的援助力度明显加大。最近召开的中央第四次西藏工作座谈会确定了国家直接 2020-12-20 …