stack.h头文件
#ifndef STACK_H
#define STACK_H
typedef int INT32;
typedef char CHAR8;
struct Stack
{
CHAR8 *p;
INT32 top;
INT32 max;
};
typedef struct Stack *Pstack;
Pstack Create(INT32 N);
void Pop(Pstack s);
INT32 Empty(Pstack s);
void Push(CHAR8 ch,Pstack s);
INT32 Full(Pstack s);
CHAR8 Top(Pstack s);
#endif
stack.c源文件
#include<stdio.h>
#include<stdlib.h>
#include"stack.h"
Pstack Create(INT32 n)
{
Pstack s = (Pstack)malloc(sizeof(struct Stack));
if(s == NULL)
{
return NULL;
}
else
{
s->p = (CHAR8 *)malloc(sizeof(CHAR8)*n);
s->max = n;
s->top = -1;
}
return s;
}
void Push(CHAR8 ch,Pstack s)
{
s->p[++s->top] = ch;
}
void Pop(Pstack s)
{
s->top--;
}
CHAR8 Top(Pstack s)
{
return s->p[s->top];
}
INT32 Empty(Pstack s)
{
if(s->top == -1)
return 1;
else
return 0;
}
INT32 Full(Pstack s)
{
if(s->top == s->max-2)
return 1;
else
return 0;
}
main文件
#include<stdio.h>
#include"stack.h"
int main()
{
INT32 n;
CHAR8 ch;
Pstack s;
printf("请输入要创建的栈大小:\n");
scanf("%d",&n);
s = Create(n);
printf("输出需要反转的序列:\n");
while(scanf("%c",&ch) != EOF)
{
Push(ch,s);
}
printf("反转完成结束序列:\n");
while(Empty(s) != 1)
{
printf("%c ",Top(s));
Pop(s);
}
printf("\n");
return 0;
}