队列
#include <stdio.h>
#include "sequeue.h"
int main() {
Pseq_queue male;
Pseq_queue female;
male = creatr_null_queue(10);
female = creatr_null_queue(10);
for(int i = 0; i < 7; i ++)
en_queue(male, i + 1); //male->q[i] = i + 1;
for(int i = 0; i < 5; i ++)
en_queue(female, i + 1);
dance_partner(male, female, 5);
return 0;
}
//
// Created by Zhao Junfeng on 16/5/5.
//
#include <stdlib.h>
#include <stdio.h>
#include "sequeue.h"
Pseq_queue creatr_null_queue(int m)
{
Pseq_queue paqu;
paqu = (Pseq_queue)malloc(sizeof(struct seq_queue));
paqu->maxnum = m;
paqu->front = 0;
paqu->rear = 0;
paqu->q = (int*)malloc(sizeof(int) * m);
return paqu;
}
int is_null_queue(Pseq_queue paqu)
{
return paqu->front == paqu->rear;
}
void en_queue(Pseq_queue paqu, int x)
{
paqu->q[paqu->rear] = x;
paqu->rear = (paqu->rear + 1) % paqu->maxnum;
}
void del_queue(Pseq_queue paqu)
{
paqu->front = (paqu->front + 1) % paqu->maxnum;
}
int front_queue(Pseq_queue paqu)
{
return paqu->q[paqu->front];
}
void dance_partner(Pseq_queue paqu1, Pseq_queue paqu2, int round)
{
Pseq_queue paqu3;
paqu3 = creatr_null_queue(20);
for(int i = 1; i <= round; i++) {
printf("-------%d---------\n", i);
do {
printf("M%d---F%d\n",front_queue(paqu1), front_queue(paqu2));
en_queue(paqu3,front_queue(paqu1));
del_queue(paqu1);
en_queue(paqu3,front_queue(paqu2));
del_queue(paqu2);
} while (!is_null_queue(paqu1) && !is_null_queue(paqu2));
while(!is_null_queue(paqu3)){
en_queue(paqu1,front_queue(paqu3));
del_queue(paqu3);
en_queue(paqu2, front_queue(paqu3));
del_queue(paqu3);
}
}
}
//
// Created by Zhao Junfeng on 16/5/5.
//
#ifndef DANCE_QUEUE_H
#define DANCE_QUEUE_H
struct seq_queue
{
int maxnum;
int front;
int rear;
int* q;
};
typedef struct seq_queue* Pseq_queue;
Pseq_queue creatr_null_queue(int m);
int is_null_queue(Pseq_queue paqu);
void en_queue(Pseq_queue paqu, int x);
void del_queue(Pseq_queue paqu);
int front_queue(Pseq_queue paqu);
void dance_partner(Pseq_queue paqu1, Pseq_queue paqu2, int round);
#endif //DANCE_QUEUE_H