隊列的建立、楊輝三角

數據結構編程練習(四)

設計思路:編寫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;
}

發佈了31 篇原創文章 · 獲贊 39 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章