作业8
This commit is contained in:
parent
e2f36ca41b
commit
d6e00f3cea
4 changed files with 116 additions and 111 deletions
108
ex8/ex8.cpp
108
ex8/ex8.cpp
|
@ -1,112 +1,6 @@
|
||||||
#include "queue.hpp"
|
#include "queue.hpp"
|
||||||
|
#include "train.hpp"
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <time.h>
|
|
||||||
#define JIE 10
|
|
||||||
|
|
||||||
class Train
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
int _v[10];
|
|
||||||
Queue<int> come[2];
|
|
||||||
Queue<int> temp[4];
|
|
||||||
Queue<int> out;
|
|
||||||
|
|
||||||
public:
|
|
||||||
Train()
|
|
||||||
{
|
|
||||||
srand(time(NULL));
|
|
||||||
|
|
||||||
for (int i = 0; i < JIE; i++)
|
|
||||||
_v[i] = JIE - i;
|
|
||||||
for (int i = 0; i < JIE; i++)
|
|
||||||
swap(i, rand() % JIE);
|
|
||||||
printf("入队序列: \n");
|
|
||||||
printf("#1到达轨 ");
|
|
||||||
for (int i = 0; i < 5; i++)
|
|
||||||
{
|
|
||||||
come[0].enqueue(_v[i]);
|
|
||||||
printf("%2d ", _v[i]);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
printf("#2到达轨 ");
|
|
||||||
for (int i = 5; i < 10; i++)
|
|
||||||
{
|
|
||||||
come[1].enqueue(_v[i]);
|
|
||||||
printf("%2d ", _v[i]);
|
|
||||||
}
|
|
||||||
printf("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
bool orgnize()
|
|
||||||
{
|
|
||||||
int j = 0;
|
|
||||||
while (!come[1].empty() || !come[0].empty())
|
|
||||||
{
|
|
||||||
for (int i = 0; i < 4;)
|
|
||||||
{
|
|
||||||
if (temp[i].back() <
|
|
||||||
(come[1].front() < come[0].front() ?
|
|
||||||
(come[1].front() ? come[1].front() : come[0].front()) :
|
|
||||||
(come[0].front() ? come[0].front() : come[1].front())))
|
|
||||||
{
|
|
||||||
printf("%2d号车厢由#%d到达轨推入#%d缓冲轨 \n",
|
|
||||||
|
|
||||||
(come[1].front() < come[0].front() ?
|
|
||||||
(come[1].front() ? come[1].front() : come[0].front()) :
|
|
||||||
(come[0].front() ? come[0].front() : come[1].front())),
|
|
||||||
|
|
||||||
(come[1].front() < come[0].front() ?
|
|
||||||
(come[1].front() ? 2 : 1) :
|
|
||||||
(come[0].front() ? 1 : 2)),
|
|
||||||
|
|
||||||
i + 1);
|
|
||||||
|
|
||||||
temp[i].enqueue(
|
|
||||||
(come[1].front() < come[0].front() ?
|
|
||||||
(come[1].front() ? come[1].dequeue() : come[0].dequeue()) :
|
|
||||||
(come[0].front() ? come[0].dequeue() : come[1].dequeue())));
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
j++;
|
|
||||||
i++;
|
|
||||||
if (j > 100)
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
int Out()
|
|
||||||
{
|
|
||||||
for (int i = 1; i <= JIE;)
|
|
||||||
{
|
|
||||||
for (int j = 0; j < 4; j++)
|
|
||||||
{
|
|
||||||
if (temp[j].front() == i)
|
|
||||||
{
|
|
||||||
printf("%2d号车厢经#%d缓冲轨推入出发区,出发队列为 ", temp[j].front(), j + 1);
|
|
||||||
out.enqueue(temp[j].dequeue());
|
|
||||||
for (int i = 0; i < out.size(); i++)
|
|
||||||
printf("%d ", out[i]);
|
|
||||||
printf("\n");
|
|
||||||
|
|
||||||
i++;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected:
|
|
||||||
void swap(int a, int b)
|
|
||||||
{
|
|
||||||
int temp = _v[a];
|
|
||||||
_v[a] = _v[b];
|
|
||||||
_v[b] = temp;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
Train T;
|
Train T;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _LIST_
|
#ifndef _LIST_HPP_
|
||||||
#define _LIST_
|
#define _LIST_HPP_
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <string>
|
#include <string>
|
||||||
#define Node node *
|
#define Node node *
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _QUEUE_
|
#ifndef _QUEUE_HPP_
|
||||||
#define _QUEUE_
|
#define _QUEUE_HPP_
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include "list.hpp"
|
#include "list.hpp"
|
||||||
|
|
111
ex8/train.hpp
Normal file
111
ex8/train.hpp
Normal file
|
@ -0,0 +1,111 @@
|
||||||
|
#ifndef _TRAIN_HPP_
|
||||||
|
#define _TRAIN_HPP_
|
||||||
|
#include <time.h>
|
||||||
|
#include "queue.hpp"
|
||||||
|
#define JIE 10
|
||||||
|
|
||||||
|
class Train
|
||||||
|
{
|
||||||
|
private:
|
||||||
|
int _v[10];
|
||||||
|
Queue<int> come[2];
|
||||||
|
Queue<int> temp[4];
|
||||||
|
Queue<int> out;
|
||||||
|
|
||||||
|
public:
|
||||||
|
Train()
|
||||||
|
{
|
||||||
|
srand(time(NULL));
|
||||||
|
|
||||||
|
for (int i = 0; i < JIE; i++)
|
||||||
|
_v[i] = JIE - i;
|
||||||
|
for (int i = 0; i < JIE; i++)
|
||||||
|
swap(i, rand() % JIE);
|
||||||
|
printf("入队序列: \n");
|
||||||
|
printf("#1到达轨 ");
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
{
|
||||||
|
come[0].enqueue(_v[i]);
|
||||||
|
printf("%2d ", _v[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
printf("#2到达轨 ");
|
||||||
|
for (int i = 5; i < 10; i++)
|
||||||
|
{
|
||||||
|
come[1].enqueue(_v[i]);
|
||||||
|
printf("%2d ", _v[i]);
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
bool orgnize()
|
||||||
|
{
|
||||||
|
int j = 0;
|
||||||
|
while (!come[1].empty() || !come[0].empty())
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 4;)
|
||||||
|
{
|
||||||
|
if (temp[i].back() <
|
||||||
|
(come[1].front() < come[0].front() ?
|
||||||
|
(come[1].front() ? come[1].front() : come[0].front()) :
|
||||||
|
(come[0].front() ? come[0].front() : come[1].front())))
|
||||||
|
{
|
||||||
|
printf("%2d号车厢由#%d到达轨推入#%d缓冲轨 \n",
|
||||||
|
|
||||||
|
(come[1].front() < come[0].front() ?
|
||||||
|
(come[1].front() ? come[1].front() : come[0].front()) :
|
||||||
|
(come[0].front() ? come[0].front() : come[1].front())),
|
||||||
|
|
||||||
|
(come[1].front() < come[0].front() ?
|
||||||
|
(come[1].front() ? 2 : 1) :
|
||||||
|
(come[0].front() ? 1 : 2)),
|
||||||
|
|
||||||
|
i + 1);
|
||||||
|
|
||||||
|
|
||||||
|
temp[i].enqueue(
|
||||||
|
(come[1].front() < come[0].front() ?
|
||||||
|
(come[1].front() ? come[1].dequeue() : come[0].dequeue()) :
|
||||||
|
(come[0].front() ? come[0].dequeue() : come[1].dequeue())));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
j++;
|
||||||
|
i++;
|
||||||
|
if (j > 40)
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
int Out()
|
||||||
|
{
|
||||||
|
for (int i = 1; i <= JIE;)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < 4; j++)
|
||||||
|
{
|
||||||
|
if (temp[j].front() == i)
|
||||||
|
{
|
||||||
|
printf("%2d号车厢经#%d缓冲轨推入出发区,出发队列为 ", temp[j].front(), j + 1);
|
||||||
|
out.enqueue(temp[j].dequeue());
|
||||||
|
for (int i = 0; i < out.size(); i++)
|
||||||
|
printf("%d ", out[i]);
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void swap(int a, int b)
|
||||||
|
{
|
||||||
|
int temp = _v[a];
|
||||||
|
_v[a] = _v[b];
|
||||||
|
_v[b] = temp;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
#endif
|
Reference in a new issue