杨辉三角循环队列
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
struct line//队列
{
int *data;//数组指针,本程序默认为100个元素
int front ,eare;//当前指向的队首,最后的队尾元素
void init()
{
data = (int *)malloc(sizeof(int )*100);//申请100个元素空间
front = 0;//将当前的队首,队尾置0;
eare = 0;
}
int in_line(int a)//入队操作
{
data[eare] = a;//eaer指向的地址赋值为队尾
eare = (eare+1)%100;//eaer+1模100,这是实现循环队列的原因
return 1;//返回成功
}
int out_line()//出队操作
{
int t = data[front];//使用临时变量t接收当前的队首元素
front = (front+1)%100;//队首向后移动加1,并模100,这是实现循环队列的原因
return t;//返回当前的元素
}
void deal(int index)//处理杨辉三角的函数
{
if (index>10)//当输出的函数大于10时,将窗口设置为130*130的尺寸
{
system("mode con cols=130 lines=130");
}
for (int x = 0;x
in_line(1);//强制将两个1入队列,因为这样做更方便,思想是,每行结束时将两个1入队列,
//因为m行的末尾和m+1行的开始都是1,此时的情况是,当前为第0行,不需要处理输出,直接入队两个1
in_line(1);
for (int k = 0 ; k
printf(" ");
}
for (int y = 0 ;y
if(y
int d = out_line();//将当前的队首出队
printf("%d ",d);//输出
}
printf("\n");//每行完了以后输出一个回车
}
}
};
void main ()
{
line L;
L.init();
L.deal(13);
getchar();
}