早教吧 育儿知识 作业答案 考试题库 百科 知识分享

栈的基本运算程序编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:(1)初如化栈S。(2)判断栈S是否非空。(3)进栈。(4)出栈。(5)输出

题目详情
栈的基本运算程序
编写一个程序,实现顺序栈的如下各种基本运算,并在此基础上设计一个主程序验证其正确性:
(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);
}
}
已经可以运行。主要问题就是出栈函数的问题,需要你仔细考虑一下。
看了 栈的基本运算程序编写一个程序...的网友还看了以下:

16.该模拟实验存在的主要不足是()①没能模拟出主导气流的运动方向②没能模拟出成云致雨的天气现象③  2020-05-13 …

一只小狗和主人玩飞碟游戏,已知飞碟在空中飞行t0=10s后落地,飞碟在水平方向上做匀速直线运动,v  2020-05-23 …

(1)许多居民楼墙外用铁三角架搁放空调主机(如图1所示),要使铁架较为牢固、安全.应把主机放在A处还  2020-11-11 …

许多居民楼墙外用铁三角架搁放空调主机(如图所示),要使铁架较为牢固、安全.应把主机放在A处还是B处,  2020-11-11 …

化学洗涤剂的洗涤能力主要来自表面活性剂。因为表面活性剂有可以降低表面张力的作用,可以渗透到连水都无法  2020-11-24 …

如何计算空气在风管内的流量通风管道的直径的38,如何计算管道内风的流量是指38口径的管道内最多可通过  2020-11-26 …

我有100多亩海拔200米高的土地,种什么合适我的家乡在海拔200多米的高山上,那里有100多亩空闲  2020-12-04 …

以法国的圣西门、傅立叶和英国的欧文为代表的空想社会主义者提出的空想社会主义理论,其“空想”性主要反映  2020-12-18 …

下列选项中,对索引和主键描述错误的是A.索引与主键不能为同一列B.主键一定是唯一索引C.一个表中可以  2020-12-21 …

2015年7月通过的新国家安全法第一次明确了“网络空间主权”这一概念,这可以理解为国家主权在网络空间  2021-01-02 …