头文件
#ifndef _STACK_H_
#define _STACK_H_
#define SIZE 10
typedef enum {FALSE = 0 , TRUE} BOOL;
typedef int Data;
typedef struct _node
{
Data data;
struct _node *next;
}Node;
typedef struct stack
{
Node head;
}Stack;
//初始化栈
void Init(Stack *s);
//入栈
void Push(Stack *s , Data data);
//出栈
void Pop(Stack *s);
//判断空栈
BOOL Empty(Stack *s);
//判断满栈
BOOL Full(Stack *s);
//获取栈顶 元素
Data GetTop(Stack *s);
#endif // _STACK_H_
功能函数
#include "stack.h"
#include <stdlib.h>
#include <stdio.h>
//初始化栈
void Init(Stack *s)
{
if (NULL == s)
return;
s->head.next = NULL;
}
//判断空栈
BOOL Empty(Stack *s)
{
if (NULL == s)
return FALSE;
if(s->head.next == NULL)
return TRUE;
return FALSE;
}
//入栈
void Push(Stack *s , Data data)
{
if (NULL == s)
return ;
Node *node = (Node *)malloc(sizeof(Node)/sizeof(char));
if (node == NULL)
return;
node->data = data;
node->next = s->head.next;
s->head.next = node;
}
//出栈
void Pop(Stack *s)
{
if (NULL == s)
return ;
if(Empty(s) == TRUE)
return ;
Node *p = s->head.next;
s->head.next = p->next;
free (p);
}
//获取栈顶 元素
Data GetTop(Stack *s)
{
if (NULL == s)
return;
if(Empty(s) == TRUE)
exit(-1);
return s->head.next->data;
}