用链表实现堆栈

来源:互联网 发布:淘宝卖家怎么报名双11 编辑:程序博客网 时间:2024/06/06 12:49
#include <stdio.h>#include <stdlib.h>typedef  struct node *Ptrl; struct node{int Data;Ptrl Next;};Ptrl Dent()//初始化 {Ptrl T;T=(Ptrl)malloc(sizeof(struct node));T->Next=NULL;return T;  }int IsEmpty(Ptrl Ptrs)//判断是否为空 {if(Ptrs->Next==NULL){return 1;}else{return 0;}}void Push(Ptrl Ptrs,int item)//入栈 {Ptrl T;T=(Ptrl)malloc(sizeof(struct node));T->Data=item;T->Next=Ptrs->Next;Ptrs->Next=T;} int  Pop(Ptrl Ptrs){Ptrl T;int FistTell;if(IsEmpty(Ptrs)==1){printf("堆栈满\n");return NULL;}else{T=Ptrs->Next;//将堆顶地址赋值给T; Ptrs->Next=T->Next;//将堆顶的NULL附给堆顶的下一个 FistTell=T->Data;free(T);return FistTell;} } int  main(){Ptrl T;int N,M,Q;T=Dent();scanf("%d",&N);for(int i=0;i<N;i++){scanf("%d",&M);Push(T,M);}for(int i=0;i<N;i++){Q=Pop(T);if(Q!=NULL){printf("%d ",Q);}}return 0;} 

0 0