1044题目描述
编程实现顺序栈的初始化、入栈、出栈、取栈顶元素和计算栈中元素个数等基本操作。
输入
第一行为入栈元素的个数; 第二行依次为入栈的元素; 出栈操作的次数n.
输出
输出n次出栈后的栈顶元素值。如果是空栈,输出-1.
样例输入
4
1 2 3 4
2
样例输出
2
#include
#include
#define Max 1000
typedef struct
{
int stack[Max];
int top;
}Seqstack;
void Initstack(Seqstack *&S)
{
S=(Seqstack *)malloc(sizeof(Seqstack));
S->top=0;
}
int Emptystack(Seqstack *&S)
{
if(S->top<=0)
return 0;
else
return 1;
}
int Pushstack(Seqstack *&S,int x)
{
if(S->top>=Max)
return 0;
else
{
S->stack[S->top]=x;
S->top++;
return 1;
}
}
int Popstack(Seqstack *&S,int *d)
{
if(S->top<=0)
return 0;
else
{
S->top--;
*d=S->stack[S->top];
return 1;
}
}
int Topstack(Seqstack *S,int *d)
{
if(S->top<=0)
return 0;
else
{
*d=S->stack[S->top-1];
return 1;
}
}
int main()
{
Seqstack *S;
Initstack(S);
int m,a[Max],n,d,x;//m:入栈元素个数
scanf("%d",&m);
for(int i=0;i<m;i++)
{
scanf("%d",&a[i]);
Pushstack(S,a[i]);
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
Popstack(S,&d);
}
if(Emptystack(S))
{
Topstack(S,&x);
printf("%d",x);
}
else
printf("-1");
}
1046
题目描述
编程实现链栈的初始化、入栈、出栈和计算栈中元素个数等基本操作。(测试数据为整数。)
输入
第一行为入栈元素的个数;
第二行为入栈元素;
出栈操作的次数n.
输出
n次出栈后的栈顶元素。如果是空栈,输出-1.
样例输入
4
1 2 3 4
2
样例输出
2
#include
#include
#define Max 1000
typedef struct lnode
{
int data;
struct lnode *next;
}Lstack;
void Initstack(Lstack *&S)
{
S=(Lstack *)malloc(sizeof(Lstack));
S->next=NULL;
}
int Emptystack(Lstack *S)
{
if(S->next==NULL)
return 0;
else
return 1;
}
void Pushstack(Lstack *&S,int x)
{
Lstack *p;
p=(Lstack *)malloc(sizeof(Lstack));
p->data=x;
p->next=S->next;//新节点链入为栈顶
S->next=p;//新节点成为新的栈顶
}
int Popstack(Lstack *&S,int *d)
{
Lstack *p=S->next;
if(p==NULL)
return 0;
else
{
S->next=p->next;//删除原栈顶结点
*d=p->data;//原栈顶结点元素赋予d
free(p);//释放原栈顶结点内存空间
return 1;
}
}
int Topstack(Lstack *S,int *d)
{
Lstack *p=S->next;
if(p==NULL)
return 0;
else
{
*d=p->data;
return 1;
}
}
int main()
{
Lstack *S;
int m,a[Max],n,d,x;
scanf("%d",&m);
Initstack(S);
for(int i=0;i<m;i++)
{
scanf("%d",&a[i]);
Pushstack(S,a[i]);
}
scanf("%d",&n);
for(int i=0;i<n;i++)
{
Popstack(S,&d);
}
if(Emptystack(S))
{
Topstack(S,&x);
printf("%d",x);
}
else
printf("-1");
}