栈的特点 先进后出
链表实现栈
栈声明LinkedStack.h
#ifndef _LinkedStack_h
struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode Stack;
int IsEmpty(Stack S);
Stack CreateStack(void);
void DisposeStack(Stack S);
void MakeEmpty(Stack S);
void Push(int X, Stack S);
int Top(Stack S);
void Pop(Stack S);
#endif
栈的实现LinkedStack.c
#include <stdio.h> // for stderr
#include <stdlib.h> // for NULL
#include "LinkedStack.h"
/*
定义栈节点,节点保存一个整数值和指向下一个节点的指针
*/
struct Node
{
int Element;
PtrToNode Next;
};
/*
测试栈是否为空栈
*/
int IsEmpty(Stack S)
{
return S->Next == NULL;
}
/*
创建一个空栈
*/
Stack CreateStack(void)
{
Stack S;
S = malloc(sizeof(struct Node));
if(S == NULL)
fprintf(stderr, "Out of space!!!");
S->Next = NULL;
MakeEmpty(S);
return S;
}
void MakeEmpty(Stack S)
{
if(S