头文件 sqStack.h
#ifndef _SQSTACK_H
#define _SQSTACK_H
#include <stdio.h>
#include <stdlib.h>
#define MAX 10
typedef struct SqStack
{
int data[MAX];
int top;
}SqStack,*PSqStack;
PSqStack sqStack_Create();//创建
int sqStack_JudgeEmpty(PSqStack p);//判空
int sqStack_JudgeFull(PSqStack p);//判满
int sqStack_Push(PSqStack p,int val);//入栈
int sqStack_Pop(PSqStack p);//出栈
int sqStack_Clean(PSqStack p);//清空
int sqStack_Destroy(PSqStack *q);//摧毁
#endif
实现文件sqStack.c
#include "sqStack.h"
PSqStack sqStack_Create()//创建
{
PSqStack p = (PSqStack)malloc(sizeof(SqStack));
if(p==NULL)
{
perror("Create fail");
return NULL;
}
p->top=0;
return p;
}
int sqStack_JudgeEmpty(PSqStack p)//判空
{
if(p==NULL)
{
perror("sqStack is NULL");
return -1;
}
if(t->top==0)
{
return 1;
}
else
{
return 0;
}
}
int sqStack_JudgeFull(PSqStack p)//判满
{
if(p==NULL)
{
perror("sqStack is NULL");
return -1;
}
if(t->top>=MAX-1)
{
return 1;
}
else
{
return 0;
}
}
int sqStack_Push(PSqStack p,int val)//入栈
{
if(p==NULL)
{
perror("sqStack is NULL");
return -1;
}
if(sqStack_JudgeFull(p)==1)
{
perror("sqStack is Full");
return 0;
}
p->data[p->top]=val;
p->top++;
return 1;
}
int sqStack_Pop(PSqStack p)//出栈
{
if(p==NULL)
{
perror("sqStack is NULL");
return -1;
}
if(sqStack_JudgeEmpty(p)==1)
{
perror("sqStack is Empty");
return 0;
}
p->top--;
return p->data[p->top];
}
int sqStack_Clean(PSqStack p)//清空
{
if(p==NULL)
{
perror("sqStack is NULL");
return -1;
}
while(sqStack_JudgeEmpty(p)!=1)
{
sqStack_Pop(p);
}
return 1;
}
int sqStack_Destroy(PSqStack *q)//摧毁
{
free(*q);
*q=NULL;
return 1;
}
如有错误欢迎指正(*^▽^*)