• 舞伴问题


    说明:
    利用队列进行排序,将舞伴进行相应的排序。
    实例:
    男:ZhangSan LiSi WangWU
    女:LiLi LiHua WangHua ZhangMeng ZhaoHua
    输出:

            ZhangSan LiLi  
            LiSi LiHua
            WangWU WangHua
    

    queue.h

    #ifndef queue_h__
    #define queue_h__
    
    #include <stdio.h>
    #include <malloc.h>
    #include <stdlib.h>
    
    typedef struct{
        char sex;
        char name[256];
    } ElementType;
    
    enum boolean {FALSE, TRUE};
    typedef enum boolean BOOL;
    
    
    typedef struct queue_def{
        ElementType* elementtype;
        int rear;
        int front;
        int MaxSize;
    }queue;
    
    void initQueue(queue* q, int sz);
    void freeQueue(queue* q);
    void MakeEmpty(queue* q);
    BOOL isEmpty(queue q);
    BOOL isFull(queue q);
    int Length(queue q);
    BOOL enQueue(queue* q, ElementType e);
    BOOL deQueue(queue *q, ElementType* e);
    ElementType getFront(queue q);
    #endif // queue_h__
    

    queue.c

    #include "queue.h"
    
    void initQueue(queue* q, int sz){
        if (sz < 0){
            puts("error: sz < 0");
            exit(1);
        }
        else{
            q->MaxSize = sz +1 ;
            q->front = q->rear = 0;
            q->elementtype = (ElementType*)malloc(q->MaxSize*sizeof(ElementType));
            if (!q->elementtype){
                puts("error: malloc error!");
                exit(1);
            }
        }
    }
    
    void freeQueue(queue* q){
        free(q->elementtype);
    }
    
    void MakeEmpty(queue* q){
        q->front = q->rear = 0;
    }
    
    BOOL isEmpty(queue q){
        return (BOOL)(q.front == q.rear);
    }
    
    BOOL isFull(queue q){
        return(BOOL)(q.front==(q.rear+1)%q.MaxSize);
    }
    
    int Length(queue q){
        return (q.rear-q.front+q.MaxSize);
    }
    
    BOOL enQueue(queue* q, ElementType e){
        if (!isFull(*q)){
            q->elementtype[q->rear] = e;
            q->rear = (q->rear+1)%q->MaxSize;
        }
        else{
            puts("error: enQueue,FULL!");
            exit(1);
        }
        return TRUE;
    }
    
    BOOL deQueue(queue *q, ElementType* e){
        if (!isEmpty(*q)){
            *e = q->elementtype[q->front];
            q->front = (q->front+1)%q->MaxSize;
        }
        else{
            puts("error: deQueue,empty!!");
            exit(1);
        }
        return TRUE;
    }
    
    ElementType getFront(queue q){
        if (isEmpty(q)){
            puts("error:getFromt, empty!!");
            exit(1);
        }
        return q.elementtype[q.front];
    }

    main.c

    #include <string.h>
    #include "queue.h"
    void process();
    
    int main(){
        process();
        return 0;
    }
    
    void process(){
        ElementType m[3] = {{'M', "ZhangSan"}, {'M', "LiSi"}, {'M', "WangWU"}};
        ElementType f[5] = {{'F', "LiLi"}, {'F', "LiHua"},{'F', "WangHua"}, {'F', "ZhangMeng"}, {'F', "ZhaoHua"}};
        queue q_m, q_f;
        ElementType t;
        char name_m[256], name_f[256];
        int i, j;
        initQueue(&q_m, 3);
        initQueue(&q_f, 5);
        for (i=0; i<3; i++)
            enQueue(&q_m, m[i]);
        for (i=0; i<5; i++)
            enQueue(&q_f, f[i]);
    
        while (!isEmpty(q_f) && !isEmpty(q_m)){
            deQueue(&q_m, &t);
            strcpy(name_m, t.name);
            deQueue(&q_f, &t);
            strcpy(name_f, t.name);
    
            printf("%s %s
    ", name_f, name_m);
        }
    }

    运行图

  • 相关阅读:
    GPS授时服务器(卫星同步时钟)科普小知识
    GPS和北斗卫星授时技术在时频领域的应用和发展
    NTP时间同步服务器(NTP时间服务器)在北京邮电大学的应用案例
    北斗时钟源(GPS网络时钟源)在校园网络应用
    NTP时钟源(GPS时间源)介绍与分析 安徽京准电子科技
    搭建ntp时间服务器并配置集群自动时钟同步
    GPS北斗网络时间源在内网域控制器上的设置方法
    肺炎疫情过后最想干的几件事
    提升苏州城市地位的几个建议
    江苏省如要打造一线城市,很简单!
  • 原文地址:https://www.cnblogs.com/laohaozi/p/12538387.html
Copyright © 2020-2023  润新知