头文件(LinkStack.h)
#include<stdio.h> #include<malloc.h> #include<assert.h> typedef int ElemType; typedef struct StackNode { ElemType data; struct StackNode *next; }StackNode,*LinkStack; void InitStack(LinkStack *s); void Push(LinkStack *s, ElemType x); void Show(LinkStack *s); void Pop(LinkStack *s);
函数实现(LinkStack.c)
#include"LinkStack.h" void InitStack(LinkStack *s){ *s = NULL; } void Push(LinkStack *s, ElemType x){//头插 StackNode *t = (StackNode*)malloc(sizeof(StackNode)); assert(t != NULL); t->data = x; t->next = NULL; if (*s == NULL) { *s = t; t->next = NULL; } else { t->next = *s; *s = t; } } void Show(LinkStack *s) { StackNode *p = *s; while (p != NULL) { printf("%d\n", p->data); p = p->next; } printf("\n"); } void Pop(LinkStack *s) { StackNode *p = *s; *s = p->next; free(p); p = NULL; }
测试文件(Main.c)
#include"LinkStack.h" int main() { LinkStack st; InitStack(&st); for (int i = 1; i <= 5; ++i) { Push(&st,i); } Show(&st); }