用链表实现堆栈

#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;
} 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值