Lkstack.h
// 链栈的定义 typedef struct node { int data; struct node *next; }LkStk;
main.c
#include <stdio.h> #include "Lkstack.h" // 链接存储实现栈的基本运算算法 // 1. 初始化,建立一个空栈 void InitStack(LkStk *LS) { LS = (LkStk *)malloc(sizeof(LkStk)); LS->next = NULL; } // 2. 判断栈空 int EmptyStack(LkStk *LS) { if(LS->next == NULL) return 1; else return 0; } // 3. 进栈 void Push(LkStk *LS, int x) { LkStk *temp; temp = (LkStk *)malloc(sizeof(LkStk)); temp->data = x; temp->next = LS->next; // 指向栈顶节点 LS->next = temp; // 更新新的栈顶节点 } // 4. 出栈 int Pop(LkStk *LS) { LkStk *temp; if(!EmptyStack(LS)) { temp = LS->next; LS->next = temp->next; free(temp); return 1; } else return 0; } // 5. 取栈顶元素 int GetTop(LkStk *LS) { if(!EmptyStack(LS)) return LS->next->data; else return 0; }