堆栈的链式存储实现

堆栈的链式存储

#include<iostream>
using namespace std;
typedef int ElementType; 
typedef struct SNode* Stack;
struct SNode{
	ElementType Data;
	Stack Next;
}; 

//1.创建一个空栈
Stack CreateStack(); 
//2.判断堆栈是否为空
int IsEmpty(Stack PtrS); 
//3.入栈操作
void Push(ElementType item,Stack PtrS); 
//4.出栈操作
ElementType Pop(Stack PtrS); 

int main(){
	Stack S=CreateStack();
	Push(1,S);
	Push(2,S);
	Push(3,S);
	Push(4,S);
	cout<<Pop(S)<<endl;
	cout<<Pop(S)<<endl;
	cout<<Pop(S)<<endl;
	cout<<Pop(S)<<endl;
	Pop(S);
	return 0;
}
//创建一个空栈 
Stack CreateStack(){
	Stack PtrS=(Stack)malloc(sizeof(SNode));
	PtrS->Next=NULL;
	return PtrS; 
} 
//判断堆栈是否为空 
int IsEmpty(Stack PtrS){//若堆栈为空则返回 1,否者返回0; 
	return (PtrS->Next==NULL);
}
//入栈    PtrS是链表头PtrS->Next才是第一个元素 
void Push(ElementType item,Stack PtrS){
	Stack newitem=(Stack)malloc(sizeof(SNode));
	newitem->Next=PtrS->Next;
	newitem->Data=item;
	PtrS->Next=newitem;
}
//出栈 
ElementType Pop(Stack PtrS){
	ElementType TopItem;
	if(IsEmpty(PtrS)){
		printf("栈空");
		return NULL;
	}else{
		Stack S=PtrS->Next;
		PtrS->Next=S->Next;
		TopItem=S->Data;
		free(S);
		return TopItem; 
	}
	 
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值