• 舞伴问题


    说明:
    利用队列进行排序,将舞伴进行相应的排序。
    实例:
    男: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);
        }
    }

    运行图

  • 相关阅读:
    局部变量、结构体和main函数
    类、对象和方法
    Archiver 浅析
    NSArry的常见方法
    iOS 键盘隐藏
    //获取拼音首字母
    UI通过UISlider编写游戏第六感
    UI中各种手势的使用点击,捏合,清扫,旋转,平移,边缘移动,长按
    IOS学习笔记 -- Modal和Quartz2D
    多控制器管理练习 -- 私人通讯录
  • 原文地址:https://www.cnblogs.com/laohaozi/p/8266614.html
Copyright © 2020-2023  润新知