堆栈(数据结构)

自己尝试写了个堆栈。

#include<cstdio>
#include<algorithm>
#include<cstdlib>
#include<iostream>
using namespace std;
struct stack
{
	int v;					//栈存储的值
	stack *front;             //指向前一个栈中的元素
}*top=NULL;             //top指针指向栈顶
void push(int v)			//入栈
{
	if(top==NULL)
	{
		top=(stack *)malloc(20);
		top->v=v;
		top->front=NULL;     		//栈最底部的front指针为空,这是区分是否到达栈底的标志
	}
	else
	{
		stack *temp=(stack *)malloc(20);
		temp->v=v;		temp->front=top;
		top=temp;
	}
}
void pop()			//出栈
{
	if(top==NULL)
		return;
	else
	{
		stack *temp=top->front;
		free(top);
		top=temp;
	}
}
int size()				//测量栈的大小
{
	int num=0;
	stack *p,*temp;
	p=top;
	while(p!=NULL)
	{
		num++;
		temp=p->front;
		p=temp;
	}
	return num;
}
bool empty()			//测试栈是否为空
{
	return top==NULL;
}
void clear()									//清空栈
{
	while(top!=NULL)
	{
		stack *temp;
		temp=top->front;
		free(top);
		top=temp;
	}
}
int main()
{
	int n,i,m;
	while((cin>>n)&&n)
	{
		for(i=1;i<=n;i++)
		{
			cin>>m;
			push(m);				//测试push()函数
		}
		cout<<size()<<endl;   			//测试size()函数
		for(i=1;i<=n;i++)
		{
			cout<<top->v<<' ';
			pop();						//测试pop()函数
		}cout<<endl;
	}
	for(i=1;i<=3;i++)
	{
		cin>>m;
		push(m);
	}clear();				//测试clear()函数
	if(empty())			//测试empty()函数
		cout<<"YES"<<endl;
	else cout<<"NO"<<endl;
	return 0;
}
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值