永发信息网

实现链式栈的基本操作:入栈、出栈、取栈顶元素、判定栈空、栈满。

答案:3  悬赏:0  手机版
解决时间 2021-11-12 23:01
实现链式栈的基本操作:入栈、出栈、取栈顶元素、判定栈空、栈满。
最佳答案
#include 
#include 

struct stack
{
int number;
struct stack *next;
};

struct stack *top;//指向栈顶
struct stack *p;//临时指针

//创建链栈
void create(int first_value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = first_value;//给栈底赋值
p->next = NULL;//栈底的指针为空
top = p;//栈顶指向栈底
}

//进栈
void input(int value)
{
p = (struct stack*)malloc(sizeof(struct stack));//申请内存空间
p->number = value;//赋值
p->next = top;//指向原来的栈顶
top = p;//栈顶往上移动一位
}

//出栈
void output()
{
p = top;//p = 栈顶
top = top->next;//栈顶往下移动一位
free(p);//释放p
}

//清空栈
void clear()
{
while(top->next != NULL)//如果不是栈底
output();//出栈
free(top);//释放栈顶
}

//取栈顶元素
int topElement()
{
return top->number;
}

int main()
{
int i;
create(0);
for(i=1;i<=10;i++)
input(i);
//clear();
printf("
栈的内容:
");
for(p=top;;p=p->next)
{
printf("%d
",p->number);
if(p->next == NULL)
break;
}
printf("栈顶元素=%d
",topElement());
}
全部回答
什么语言?
c?
c++?
#include
#include
#define NULL 0
typedef struct snode
{
int data;
struct snode *next;
}stack;
//
void push( stack **s,int x)
{
stack *p;
p=( stack *)malloc(sizeof(snode));
//cin> > x;
p-> data=x;
p-> next=*s;
*s=p;
}
//
void pop( stack **s )
{
stack *p;
int e = 0 ;
p=(stack *)malloc(sizeof(snode));
if(NULL == (*s))
cout < < "空战 ";
else
{
p=*s;
e=p-> data;
*s=p-> next;
cout < < "出栈的数是:\t " < }
free(p);
}
//
void print(stack **s)
{
//stack *s;
if( *s == NULL)
cout < < "空栈 ";
else if((*s)!=NULL)
{
cout < < "出栈的数是:\t " < <(*s)-> data < *s = (*s)-> next;
}
}
//
void stackempty(stack **s)
{
//stack *s;
if(*s == NULL)
cout < < "栈空 " < else
cout < < "栈非空 " < }
//
void main()
{
stack *s= NULL ;// = new stack();
int f,x,e;
puts( "输入1(入栈)或2(出栈)\n ") ;
cin> > f;
while(1)
{
switch (f)
{
case 1:
puts( "输入入栈的数:\t ") ;
cin> > x;
push(&s,x);
print(&s);
stackempty(&s);
break;
case 2:
pop(&s);
print(&s);
stackempty(&s);
break;
default:
break ;
}
break ;
}
system( "pause ") ;
}
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
潜江市中国人民银行(潜江市支行)地址是什么,
我想看昨天山西科教频道的小郭跑腿
荆门龙泉北校碧桂园分校的大门是朝什么方向
什么是pp5号塑料杯
谁能给一个舰娘身高比例的图呀,跪求
What's your favorite fruit? Why? 请用
农村信用合作社(桃尧信用社)地址有知道的么?
慢四步好人一生平安动作分解共有多少步怎么才
如何同时拨打多个电话号码?
怎样用c语言编写ATM系统?
我办理的工商银行卡,里边的钱被骗子给骗走了
米线起名大全2015最新版的
三异丙基氯硅烷与产品混合物怎么提纯
丽雨嘉田美容院(立汇美罗湾店)在哪里啊,我有
葱姜的做法,葱姜的做法大全带图解,葱姜怎样
推荐资讯
给我装过系统的人会远程控制我的电脑吗?
班上一个女生经常无缘无故打我,专门惹我一个
浚县四实小具体位置在哪?
罗星塔的来历是什么?
黄龙玉碰到身上的汗水会变花吗?
彩霸胶装机980Z5夹面台不回落是怎么回事啊
上厕所请将卫生纸掉入厕所内,应该怎么说
Dontknowhowtocomfort翻译中文
求泰妍的靠近的mp3格式,谢谢!
同时与两家单位分别签定劳动合同劳务合同可以
释迦牟尼佛关於明妃的要求明妃必须要30岁以下
谁知道兄弟用数字几来代表、谢谢
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?