数据结构习题--队列

Posted susususu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构习题--队列相关的知识,希望对你有一定的参考价值。

用队列输出杨辉三角
基本思路:使用两个队列,第一个队列用于存当前行的系数,将计算后的下一行系数放入第二个队列,然后再复制到第一个队列中,最后输出第一个队列(循环n-1次)。

#include<stdio.h>
#include<stdlib.h>
#define maxsize 30
typedef int datatype;
typedef struct {
    datatype data[maxsize];
    int front,rear;
}CricQueue; 

void Initial(CricQueue *q){
    int front = 0;
    int rear = 0;
}

int QueueIsEmpty(CricQueue *q){
    return q->front == q->rear;
}

int QueueIsFull(CricQueue *q){
    return q->front == (q->rear+1)%maxsize;
} 

int EnQueue(CricQueue *q,datatype x){
    if(QueueIsFull(q))
        return 0;
    q->data[q->rear++] = x;
    return 1;
}

int DeQueue(CricQueue *q){
    datatype k;
    if(QueueIsEmpty(q))
        return 0;
    k = q->data[q->front];
    q->front = (q->front+1)%maxsize;
    return k;
}

int Getfront(CricQueue *q){
    datatype m;
    if(QueueIsEmpty(q))
        return 0;
    m = q->data[q->front];
    return m; 
}

void PascalAngle(int n){
    int i;
    datatype j,k;
    CricQueue *q1 = (CricQueue*)malloc(maxsize*sizeof(CricQueue));
    CricQueue *q2 = (CricQueue*)malloc(maxsize*sizeof(CricQueue));
    Initial(q1),Initial(q2);
    EnQueue(q1,1),EnQueue(q1,1);
    printf("1   1\\n");
    for(i = 1;i<n;i++){ 
        EnQueue(q2,1);
        //计算第i+1行的元素,进队列q2 
       while(!QueueIsEmpty(q1)){    
           k = DeQueue(q1);
            if(!QueueIsEmpty(q1)){
              j = Getfront(q1);
              EnQueue(q2,k+j);
            }else
            EnQueue(q2,1);     
       }
        //将第i+1行复制到q1中,并输出该行 
        while(!QueueIsEmpty(q2)){ 
            k = DeQueue(q2);
            EnQueue(q1,k);
            printf("%d",k);
            printf("    ");
       }
            printf("\\n");
   }
}

main(){
    int n;
    printf("请输入行数:");
    scanf("%d",&n);
    PascalAngle(n);
} 

技术图片

以上是关于数据结构习题--队列的主要内容,如果未能解决你的问题,请参考以下文章

Python数据结构与算法(3.4)——队列相关应用与习题

数据结构习题--栈与队列

# Java 常用代码片段

# Java 常用代码片段

习题3.12 另类循环队列(20 分)浙大版《数据结构(第2版)》题目集

习题3.13 双端队列(25 分)浙大版《数据结构(第2版)》题目集