头文件
#include<stdio.h>
#include<stdlib.h>
#include<assert.h>
结构体构造类型
typedef struct stack
{
int data;
struct stack *next;
}Stack;
函数接口
- 初始化栈
Stack *Init_stack()
{
Stack *pst=NULL;
return pst;
}
- 判断栈是否为空
int Is_empty(Stack *pst)
{
return NULL==pst;
}
- 入栈
Stack *Push_stack(Stack *pst,int data)
{
Stack *p=(Stack *)malloc(sizeof(Stack));
p->data=data;
p->next=pst;
return p;
}
- 出栈
Stack *Del_stack(Stack *pst)
{
if(Is_empty(pst))
{
printf("Stack empty!\n");
return NULL;
}
Stack *p=pst;
pst=pst->next;
free(p);
return pst;
}
- 获取栈顶元素
int Get_top(Stack *pst)
{
if(Is_empty(pst))
{
printf("Stack empty!\n");
return -1;
}
return pst->data;
}
- 获得栈长度
int Lenth_stack(Stack *pst)
{
Stack *p=pst;
int lenth=0;
while(NULL!=p)
{
lenth++;
}
return lenth;
}
- 显示栈元素
void Show_Stack(Stack *pst)
{
if(Is_empty(pst))
{
printf("Stack empty!\n");
return ;
}
Stack *p=pst;
while(NULL!=p)
{
printf("%d ",p->data);
p=p->next;
}
}
- 释放栈
Stack *Set_null(Stack *pst)
{
Stack *p=pst;
while(NULL!=p)
{
pst=pst->next;
free(p);
p=pst;
}
return pst;
}
关于数组实现静态栈的算法实现,请参考我的博客:
http://blog.csdn.net/rdgfdd/article/details/79338380