【数据结构与算法】 队列

您所在的位置:网站首页 杨辉三角实际应用生活中 【数据结构与算法】 队列

【数据结构与算法】 队列

#【数据结构与算法】 队列| 来源: 网络整理| 查看: 265

队列的应用举例1(共2例)

打印杨辉三角

               1

             1  1

           1  2  1

         1  3  3  1

       1  4  6  4  1

    1  5  10 10 5  1

  1  6  15 20 15 6  1

由上,是7行的杨辉三角形,杨辉三角形的特点是两腰都是数字1,其他位置是其上一行中与之相岭的两个整数之和。所以,在打印过程中,第i行上的元素要由第i-1行中的元素来生成。我们可以利用循环队列实现打印杨辉三角形的过程。在循环队列中依次存放第i-1行上的元素,然后逐个出列并打印,同时生成第i行元素并入列。

以打印第六行,生成第七行为例,如图

前N行的算法描述如下:

void YangHuiTriangle(){ SeqQueue Q; InitQueue(&Q); EnterQueue(&Q,1); //第一行入列 for(n=2;nbase) { exit(OVERFLOW); } Q->front=Q->rear=0; return OK; } int isEmpty(struct SqQueue Q) { if(Q.front==Q.rear) return TRUE; else return FALSE; } int EnterQueue(struct SqQueue *Q,QElemType e) { if((Q->rear+1)%MAXQSIZE==Q->front) return ERROR; Q->base[Q->rear]=e; Q->rear=(Q->rear+1)%MAXQSIZE; return OK; } int DeleteQueue(struct SqQueue *Q,QElemType *e) { if((Q->front==Q->rear)) return ERROR; *e =Q->base[Q->front]; Q->front=(Q->front+1)%MAXQSIZE; return OK; } int main() { char ch1 = '\0',ch2; struct SqQueue Q; int f; InitQueue(&Q); for ( ; ; ) { for( ; ; ) { printf("A"); if(kbhit()){ ch1=bdos(7,0,0); f=EnterQueue(&Q,ch1); if (f==FALSE) { printf("循环队列已满\n"); break; } } if (ch1==';'||ch1==',') { break; } } while(!isEmpty(Q)) { DeleteQueue(&Q, &ch2); putchar(ch2); } if (ch1==';') { break; }else ch1=' '; } }



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3