要求:1.有出入栈的操作.
2.操作元素为N个.
顺序栈:
#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
#define status int
typedef int ElemType;
#define STACKSIZE 100
//补充栈的结构类型声明部分
status initstack( sqstack &s)
{ s.top = -1;
return OK; }
status push(sqstack &s, ElemType e )
{
}
status pop(sqstack &s, ElemType &e)
{
}
main()
{sqstack y;
int n,i;
ElemType e;
initstack(y);
printf("栈已建好 !");
printf("\n");
printf("请输入N的值,它代表 栈中元素个数:");
scanf("%d", &n);
for( i=0;i<n;i++)
{
printf("进栈操作为:") ;
scanf("%d",&e);
//补充一条语句:调用入栈函数
}
printf("\n");
printf("出栈元素序列为:");
for( i=0;i<n;i++)
{ //补充一条语句:调用出栈函数
printf("%d \n",e);}
printf("\n\n");
}
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define status int
typedef int ElemType;
#define STACKSIZE 100
struct sqstack //补充栈的结构类型声明部分
{
int top;
ElemType stack[STACKSIZE];
};
status initstack(sqstack &s)
{
s.top = -1;
return OK;
}
status push(sqstack &s, ElemType e)
{
if(s.top == STACKSIZE - 1)
return ERROR;
s.stack[++s.top] = e;
return OK;
}
status pop(sqstack &s, ElemType &e)
{
if(s.top < 0)
return ERROR;
e = s.stack[s.top--];
return OK;
}
int main()
{
sqstack y;
int n, i;
ElemType e;
initstack(y);
printf("栈已建好!");
printf("\n");
printf("请输入N的值,它代表栈中元素个数:");
scanf("%d", &n);
for(i = 0; i < n; i++)
{
printf("进栈操作为:");
scanf("%d", &e);
if(push(y, e) == ERROR) //补充一条语句:调用入栈函数
break;
}
printf("\n");
printf("出栈元素序列为:\n");
for(i = 0; i < n; i++)
{
if(pop(y, e) == ERROR) //补充一条语句:调用出栈函数
break;
printf("%d\n", e);
}
printf("\n\n");
return 0;
}
运行截图:
如有疑问,请追问。