#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;
}
用链表实现堆栈
最新推荐文章于 2022-04-12 17:24:26 发布