c语言 栈

Modified on: Thu, 21 Mar 2019 22:25:32 +0800 热度: 1,090 度
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
    char *pBuffer;
    int Size;
    int Top;
}stack;
void MyStack(stack *p,int size);
void DestroyStack(stack *p);
int StackEmpty(stack p);
int StackFull(stack p);
void ClearStack(stack *p);
int StackLength(stack p);
int push(stack *p,char elem);
int pop(stack *p,char *elem);
void StackTraverse(stack p);

void MyStack(stack *p,int size)
{
    p->Size=size;
    p->pBuffer=(char *)malloc(sizeof(char)*p->Size);
    p->Top=0;
}
void DestroyStack(stack *p)
{
    free(p->pBuffer);
    p->pBuffer=NULL;
}
int StackEmpty(stack p)
{
    if(0==p.Top)
    {
        return 1;
    }
    return 0;
}
int StackFull(stack p)
{
    if(p.Size==p.Top)
    {
        return 1;
    }
    return 0;
}
void ClearStack(stack *p)
{
    p->Top=0;
}
int StackLength(stack p)
{
    return p.Top;
}
int push(stack *p,char elem)
{
    if(StackFull(*p))
    {
        return 1;
    }
    p->pBuffer[p->Top]=elem;
    p->Top++;
    return 0;
}
int pop(stack *p,char *elem)
{
    if (StackEmpty(*p))
    {
        return 1;
    }
    p->Top--;
    *elem=p->pBuffer[p->Top];
    return 0;
}
void StackTraverse(stack p)
{
    int i;
    for (i=0;i<p.Top;i++)
    {
        printf("%-5c",p.pBuffer[i]);
    }
    putchar(10);
}

添加新评论