SeqStack.h
typedef struct stack{
DATA data[SIZE+1];
int top;//栈顶序号 0为空 size为满
}SeqStack;
SeqStack *SeqStackInit() //初始化栈
{
SeqStack *p;
if(p=(SeqStack *)malloc(sizeof(SeqStack))){//申请内存
p->top=0;
return p;//返回栈指针
}
return NULL;
}
void SeqStackFree(SeqStack *s) {//释放内存
if(s)free(s);
}
int SeqStackIsEmpty(SeqStack *s)//判断栈是否为空
{
return (s->top==0);
}
void SeqStactClear(SeqStack *s)//清空栈
{
s->top=0;
}
int SeqStackIsFull(SeqStack *s)//判断栈是否已满
{
return (s->top==SIZE);
}
int SeqStackPush(SeqStack *s,DATA data)//入栈
{
if((s->top)>SIZE)
{
printf("栈溢出!\n");
return 0;
}
s->data[++s->top]=data;///
return 1;
}
DATA SeqStackPop(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]);
}
SeqStackTest.c
#include<stdio.h>
#include<stdlib.h>
#define SIZE 50
typedef struct
{
char name[15];
int age;
} DATA;
#include"SeqStack.h"
int main()
{
DATA data,data1;
SeqStack *stack;
stack=SeqStackInit();
printf("入栈操作:\n");
printf("input name age:");
scanf("%s%d",data.name,&data.age);
SeqStackPush(stack,data);
printf("input name age:");
scanf("%s%d",data.name,&data.age);
SeqStackPush(stack,data);
printf("出栈操作:\n任意键进行操作");
getch();
data1=SeqStackPop(stack);
printf("出栈数据:(%s,%d)\n",data1.name,data1.age);
printf("出栈操作:\n任意键进行操作");
getch();
data1=SeqStackPop(stack);
printf("出栈数据:(%s,%d)\n",data1.name,data1.age);
SeqStackFree(stack);
getch();
return 0;
}