//SeqStack.h
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef int Datatype;
typedef struct SeqStack
{
Datatype* base;
Datatype* top;
int capacity;
}SS;
void SeqStackInit(SS* ps);
void SeqStackDestory(SS* ps);
void SeqStackPush(SS* ps, Datatype x);
void SeqStackPop(SS* ps);
Datatype SeqStackTop(SS* ps);
int SeqStackLen(SS* ps);
int SeqStackEmpty(SS* ps);
//SeqStack.c
#include "SeqStack.h"
void SeqStackInit(SS* ps)
{
assert(ps);
ps->base = (SS*)malloc(sizeof(SS) * 4);
if (ps->base == NULL)
{
printf("失败");
exit(-1);
}
ps->top = ps->base;
ps->capacity = 4;
}
void SeqStackDestory(SS* ps)
{
assert(ps);
free(ps->base);
ps->base = ps->top = NULL;
ps->capacity = 0;
}
void SeqStackPush(SS* ps, Datatype x)
{
assert(ps);
if (ps->top-ps->base == ps->capacity)
{
ps->capacity = ps->capacity * 2;
ps->base = (Datatype*)realloc(ps->base, sizeof(Datatype) * ps->capacity);
if (ps->base == NULL)
{
printf("失败");
exit(-1);
}
}
*(ps->top) = x;
ps->top++;
}
void SeqStackPop(SS* ps)
{
assert(ps);
if (ps->base == ps->top)
{
printf("空栈");
exit(-1);
}
ps->top--;
}
Datatype SeqStackTop(SS* ps)
{
if (ps->base != ps->top)
return *(ps->top - 1);
}
int SeqStackLen(SS* ps)
{
return ps->top - ps->base;
}
int SeqStackEmpty(SS* ps)
{
if (ps->base == ps->top)
return 1;
else
return 0;
}
数据结构顺序栈
最新推荐文章于 2024-09-25 20:49:26 发布