#include <stdio.h> #include <malloc.h> typedef int ElemType; typedef struct LinkStack{ LinkStack *link; ElemType elem; }* PLinkStack; void InitStack(PLinkStack L); PLinkStack Push(PLinkStack L,ElemType i); PLinkStack Pop(PLinkStack L); void DestroyStack(PLinkStack L); bool StackEmpty(PLinkStack L); ElemType GetTop(PLinkStack L); void StackTraverse(PLinkStack L); void main() { PLinkStack L; L = (PLinkStack)malloc(sizeof(LinkStack)); InitStack(L); for (int i = 0; i < 5; i++) { L = Push(L,i*2+1); } StackTraverse(L); L = Pop(L); StackTraverse(L); if (!StackEmpty(L)) printf("%d\n",GetTop(L)); DestroyStack(L); } void InitStack(PLinkStack L) // 建立一个空的链式栈 { L->link = NULL; } PLinkStack Push(PLinkStack L,ElemType i) { PLinkStack P; P = (PLinkStack)malloc(sizeof(LinkStack)); if (P == NULL) { printf("内存分配失败\n"); return NULL; } P->elem = i; P->link = L; L = P; return L; } PLinkStack Pop(PLinkStack L) { PLinkStack P = L; L = L->link; free(P); return L; } void DestroyStack(PLinkStack L) { if (L != NULL) { L->link = NULL; free(L); } } bool StackEmpty(PLinkStack L) { return (L==NULL && L->link == NULL); // true 为空; false 不为空 } ElemType GetTop(PLinkStack L) { return L->elem; } void StackTraverse(PLinkStack L) { PLinkStack P = L; while (P->link != NULL) { printf("%d\t",P->elem); P = P->link; } printf("\n"); }
原文地址:https://www.jb51.cc/datastructure/383104.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。