数据结构编程练习(四)
设计思路:编写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;
}