队列的建立、杨辉三角

数据结构编程练习(四)

设计思路:编写C++顺序表类,利用顺序存储结构存储数据,并实现其相应功能。

功能1:完成队列的初始化。

功能2:判断队列是否为空。

功能3:判断队列是否为满。

功能4:取队头元素。

功能5:入队。

功能6:出队。

功能7:利用队列计算并打印杨辉三角。


代码实现:

#include "iostream"
using namespace std;
#define max 100
class queue
{
public: 
	queue();
	~queue();
	bool empty();
	bool full();
	int get_front(int &x);
	int append(int x);
	int serve();
	int output_YH();
private:
	int data[max];
	int count;
	int front,rear;
};
queue::queue()
{
	count=0;
	rear=front=0;
}
queue::~queue()
{
}
//判空 
bool queue::empty()
{
	if(rear==front)
	    return true;
	else
	    return false;
}
//判满 
bool queue::full()
{
	if(rear==max-1)
	    return true;
	else
	    return false;
}
//入队 
int queue::append(int x)
{
	if(full())
	{
		cout<<"队列已满,不可入队"<<endl;
		return 0; 
	}
	else
	{
		data[rear]=x;
		rear++;
		count++;
		return 1;
	}
}
//出队
int queue::serve()
{
	if(empty())
	{
		cout<<"队列为空,不可出队"<<endl;
		return 1;
	}
	else
	{
		int x;
		x=data[0];//打印杨辉三角时用 
		for(int i=0;i<count-1;i++)
		    data[i]=data[i+1];
		rear--;
		count--;
		return x;
	}
} 
//取队顶元素
int queue::get_front(int &x)
{
	if(empty())
	{
		cout<<"队列为空,不可出队"<<endl;
		return 1;
	}
	else
	{
		x=data[front];
		return 1;
	}
} 
//打印杨辉三角
int queue::output_YH()
{
	int s1,s2,n,x;
	cout<<"请输入所要打印杨辉三角的层数:";
	cin>>n; 
	for(int k=1;k<n;k++)
		cout<<" ";
	cout<<1<<endl;
	append(1);
	for(int i=2;i<=n;i++)
	{
		int z=n-i;
		while(z--)
			cout<<" ";
		s1=0;
		for(int j=1;j<=i-1;j++)
		{
			s2=serve();
			cout<<s1+s2<<" ";
			append(s1+s2);
			s1=s2;
		}
		cout<<1<<endl;
		append(1);
	}
	return 1;
}
int main()
{
	queue obj1;
	int x;
	cout<<"请输入队列中的各元素,以负数作为结束标志:";
	while(cin>>x&&x>=0)
	    obj1.append(x);
	obj1.get_front(x);
	cout<<"队顶元素为:"<<x<<endl;
	while(!obj1.empty())
	    obj1.serve();
	obj1.full();
	obj1.empty();
	obj1.output_YH();
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值