下面先实现站的基本功能,最后通过一个Test来测试下方法是否实现
建个.c文件
typedef struct
{
DATA data[Size+1];
int top;
} SeqStack;
//初始化
SeqStack *SeqStackInit()
{
SeqStack *p;
if(p=(SeqStack *)malloc(sizeof(SeqStack)))
{
p->top = 0;
return p;
}
return NULL;
}
//判断栈是否为空
int SeqStackIsEmpty(SeqStack *s)
{
return (s->top==0);
}
void SeqStackFree(SeqStack *s)
{
if(s)
free(s);
}
//判断栈是否是满的
int SeqStackIsFull(SeqStack *s)
{
return (s->top==Size);
}
//入栈
int SeqStackIn(SeqStack *s,DATA data)
{
if((s->top+1)>Size)
{
printf("栈已满");
return 0 ;
}
s->data[++s->top]=data;
return 1;
}
//出栈
DATA SeqStackOut(SeqStack *s)
{
if(s->top ==0)
{
printf("栈为空");
exit(0);
}
return (s->data[s->top--]);
}
//读栈顶元素
DATA SeqStackPeek(SeqStack *s)
{
if(s->top==0)
{
printf("栈为空");
exit(0);
}
return (s->data[s->top]);
}
接着一个测试文件
#include "stdio.h"
#include "stdlib.h"
#define Size 50
typedef struct
{
char name[15];
int age;
}DATA;
#include "SeqStack.c"
int main()
{
SeqStack *stack;
DATA data,data1;
stack = SeqStackInit();
printf("入栈000\n");
printf("输入姓名 年龄进行入栈\n");
scanf("%s%d",data.name,&data.age);
SeqStackIn(stack,data);
printf("输入姓名 年龄进行入栈\n");
scanf("%s%d",data.name,&data.age);
SeqStackIn(stack,data);
printf("按任意键进行出栈操作\n");
getch();
data1 = SeqStackOut(stack);
printf("出栈数据是%s %d\n",data1.name,data1.age);
printf("再按任意键进行出栈操作\n");
getch();
data1 = SeqStackOut(stack);
printf("出栈数据是%s %d\n",data1.name,data1.age);
SeqStackFree(stack);
getch();
return 0;
}
下面是效果图