数据结构---栈的链式实现

来源:互联网 发布:centos部署git服务器 编辑:程序博客网 时间:2024/05/16 08:18

链栈和链表的实现方式大致相同,只是链栈只能在头部操作。


#include <stdio.h>#include <stdlib.h>typedef int ElemType;typedef struct Node{ElemType Data;struct Node * Next;}Node;typedef struct {Node *Base;Node *Top;}Stack, *LinkStack;//create an empty stackLinkStack InitStack();//Push an element into LinkStackvoid Push(LinkStack S, ElemType E);//Pop an element from top of LinkStack, return the top of stackElemType Pop(LinkStack S);void PrintStack(LinkStack S);int main(){LinkStack S = InitStack();Push(S, 1);Push(S, 2);Push(S, 3);PrintStack(S);printf("%d %d\n", Pop(S), Pop(S));PrintStack(S);return 0;}LinkStack InitStack(){LinkStack S = (LinkStack)malloc(sizeof(Stack));S->Base = (Node *)malloc(sizeof(Node));S->Top = S->Base;return S;}void Push(LinkStack S, ElemType E){S->Top->Data = E;S->Top->Next = (Node *)malloc(sizeof(Node));S->Top = S->Top->Next;S->Top->Next = NULL;}ElemType Pop(LinkStack S){Node *Tmp = S->Base;while(Tmp->Next != S->Top)Tmp = Tmp->Next;S->Top = Tmp;Tmp = Tmp->Next;free(Tmp);S->Top->Next = NULL;return S->Top->Data;}void PrintStack(LinkStack S){Node *Tmp = S->Base;while(Tmp != S->Top){printf("%d ", Tmp->Data);Tmp = Tmp->Next;}printf("\n");}


0 0
原创粉丝点击