【数据结构】链式栈的操作
发布时间:2020-12-15 06:30:41 所属栏目:安全 来源:网络整理
导读:#include stdio.h#include malloc.htypedef 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 DestroySt
#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("%dn",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("%dt",P->elem); P = P->link; } printf("n"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |