问题描述:
n个人站成一排,编号为1~n,现在从左向右报数“1,2,1,2.。。。”,报到1的人出列,报到2的人立即站到队伍的最后,如此循环往复,直到n个人全部出列为止。
public class LinkedQueue {
QueueHead qh = new QueueHead();
boolean empty() {
return qh.front == null; //or qh.rear == null
}
void enQueue(int e) {
QNode q = new QNode(e);
if(empty()) {
qh.front = q;
qh.rear = q;
} else {
qh.rear.next = q;
qh.rear = q;
}
}
int[] deQueue() {
int[] arr = new int[2];
if(qh.rear == null) {
arr[0] = 0;
return arr;
}
arr[0] = 1;
arr[1] = qh.front.data;
if(qh.front.next == null) {
qh.front = qh.rear = null;
} else {
qh.front = qh.front.next;
}
return arr;
}
void display() {
QNode p = qh.front;
while(p != null) {
if(p.next == null) {
System.out.println(p.data);
} else {
System.out.print(p.data + "->");
}
p = p.next;
}
}
public static void main(String[] args) {
LinkedQueue sq = new LinkedQueue();
for(int i=1; i<=8; i++) {
sq.enQueue(i);
}
while(!sq.empty()) {
int[] arr = sq.deQueue();
System.out.print(arr[1] + " ");
if(!sq.empty()) {
arr = sq.deQueue();
sq.enQueue(arr[1]);
}
}
}
}
class QNode {
int data;
QNode next;
QNode(){}
QNode(int e) {
data = e;
}
}
class QueueHead {
QNode front;
QNode rear;
public QueueHead() {}
}
结果:
1 3 5 7 2 6 4 8
问题描述:
n个人站成一排,编号为1~n,现在从左向右报数“1,2,3,1,2,3。。。”,报到2的人出列,报到1和3的人立即站到队伍的最后,如此循环往复,直到n个人全部出列为止。
public class LinkedQueue {
QueueHead qh = new QueueHead();
boolean empty() {
return qh.front == null; //or qh.rear == null
}
void enQueue(int e) {
QNode q = new QNode(e);
if(empty()) {
qh.front = q;
qh.rear = q;
} else {
qh.rear.next = q;
qh.rear = q;
}
}
int[] deQueue() {
int[] arr = new int[2];
if(qh.rear == null) {
arr[0] = 0;
return arr;
}
arr[0] = 1;
arr[1] = qh.front.data;
if(qh.front.next == null) {
qh.front = qh.rear = null;
} else {
qh.front = qh.front.next;
}
return arr;
}
void display() {
QNode p = qh.front;
while(p != null) {
if(p.next == null) {
System.out.println(p.data);
} else {
System.out.print(p.data + "->");
}
p = p.next;
}
}
public static void main(String[] args) {
LinkedQueue sq = new LinkedQueue();
for(int i=1; i<=8; i++) {
sq.enQueue(i);
}
while(!sq.empty()) {
int[] arr = sq.deQueue();
sq.enQueue(arr[1]);
arr = sq.deQueue();
System.out.print(arr[1] + " ");
if(!sq.empty()) {
arr = sq.deQueue();
sq.enQueue(arr[1]);
}
}
}
}
class QNode {
int data;
QNode next;
QNode(){}
QNode(int e) {
data = e;
}
}
class QueueHead {
QNode front;
QNode rear;
public QueueHead() {}
}
结果:
2 5 8 4 1 7 3 6