题目描述
编程实现链栈的初始化、入栈、出栈和计算栈中元素个数等基本操作。(测试数据为整数。)
输入
第一行为入栈元素的个数;
第二行为入栈元素;
出栈操作的次数n.
输出
n次出栈后的栈顶元素。如果是空栈,输出-1.
样例输入
4
1 2 3 4
2
样例输出
2
#include<stdio.h>
#include<malloc.h>
typedef struct node
{
int data;
struct node *next;
}Lnode;
void init(Lnode*&st)
{
st=(Lnode*)malloc(sizeof(Lnode));
st->next=NULL;
}
bool Empty(Lnode*st)
{
return (st->next==NULL);
}
void push(Lnode*&st,int num)
{
Lnode*p;
p=(Lnode*)malloc(sizeof(Lnode));
p->data=num;
p->next=st->next;
st->next=p;
}
void pop(Lnode*&st)
{
if(Empty(st)) return ;
Lnode*p;
p=st->next;
st->next=p->next;
free(p);
}
int gettop(Lnode*st)
{
return (st->next->data);
}
int main()
{
int n,num,m;
Lnode*st;
init(st);
scanf("%d",&n);
for(int i=0;i<n;i++)
{
scanf("%d",&num);
push(st,num);
}
scanf("%d",&m);
for(int j =0;j<m;j++)
{
pop(st);
}
//可用入栈数n-出栈数,如果<=0,则说明栈为空
if(n-m<=0) printf("-1");
else printf("%d",gettop(st));
}