线性栈(c语言)
#include <stdlib.h>
#include <stdio.h>
#define MAX 50
typedef struct
{
int data[MAX];
int top;
}stack;
void intStack(stack* l)
{
l->top = -1;
printf("初始化成功!\n");
}
int longStack(stack* l)
{
if (l->top > 0)
{
printf("该线性栈的长度为:%d\n", l->top + 1);
return l->top + 1;
}
else
{
return 0;
}
}
int isEmpty(stack* l)
{
if (l->top == -1)
{
printf("线性栈为空!\n");
return 0;
}
else
{
return 1;
}
}
int isFull(stack* l)
{
if (l->top + 1 == MAX)
{
printf("线性栈已满.\n");
return 0;
}
else
{
return 1;
}
}
void push(stack* l,int c)
{
if (l->top + 2 <= MAX)
{
l->top++;
l->data[l->top] = c;
}
else
{
printf("添加失败!\n");
}
}
int pop(stack* l)
{
if (l->top != 0)
{
l->top--;
printf("删除成功!\n");
return (l->data[l->top+1]);
}
else
{
return 0;
}
}
void getTop(stack* l, int* d)
{
if (l->top != 0)
{
*d = l->data[l->top];
}
else
{
printf("操作失败!\n");
}
}
int main()
{
stack l;
stack* ll = &l;
intStack(ll);
longStack(ll);
isEmpty(ll);
isFull(ll);
push(ll,1);
int s;
int* d = &s;
pop(ll);
getTop(ll, d);
return 0;
}
