当前位置: 首页 > news >正文

舞伴问题

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

运行图

转载于:https://www.cnblogs.com/laohaozi/p/8266614.html

相关文章:

  • Linux之查看文件大小和数目
  • Tomcat7优化配置
  • java对xml节点属性的增删改查
  • sublime text 3配置c/c++编译环境
  • Html5编辑工具
  • LAMP编译部署
  • centos7配置固定ip
  • 设计模式简单入门(下)
  • Linux下完全删除Oracle
  • mysql外键实战
  • php 使用pathinfo(), parse_url(), basename()解析URL
  • gitlab 统计
  • 做软件开发的同学常用软件列表
  • 用Java编写你自己的简单HTTP服务器
  • Python终端如何输出彩色字体
  • 分享的文章《人生如棋》
  • 【Linux系统编程】快速查找errno错误码信息
  • 230. Kth Smallest Element in a BST
  • Create React App 使用
  • iOS 颜色设置看我就够了
  • Java多态
  • MySQL-事务管理(基础)
  • React-Native - 收藏集 - 掘金
  • springMvc学习笔记(2)
  • 搭建gitbook 和 访问权限认证
  • 复习Javascript专题(四):js中的深浅拷贝
  • 精彩代码 vue.js
  • 力扣(LeetCode)21
  • 什么软件可以剪辑音乐?
  • 使用 Xcode 的 Target 区分开发和生产环境
  • 一个6年java程序员的工作感悟,写给还在迷茫的你
  • MPAndroidChart 教程:Y轴 YAxis
  • 正则表达式-基础知识Review
  • #使用清华镜像源 安装/更新 指定版本tensorflow
  • $.ajax()
  • (3)选择元素——(17)练习(Exercises)
  • (6)设计一个TimeMap
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (solr系列:一)使用tomcat部署solr服务
  • (ZT)薛涌:谈贫说富
  • (附源码)spring boot校园健康监测管理系统 毕业设计 151047
  • (原創) 如何使用ISO C++讀寫BMP圖檔? (C/C++) (Image Processing)
  • (转)平衡树
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • .bat批处理(八):各种形式的变量%0、%i、%%i、var、%var%、!var!的含义和区别
  • .NET Core Web APi类库如何内嵌运行?
  • .NET Core中Emit的使用
  • .net framework4与其client profile版本的区别
  • .net FrameWork简介,数组,枚举
  • .net mvc actionresult 返回字符串_.NET架构师知识普及
  • .NET 材料检测系统崩溃分析
  • .NET 使用 XPath 来读写 XML 文件
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • [20160807][系统设计的三次迭代]
  • [20180224]expdp query 写法问题.txt