Windows Message Queue教程
<pre class="has">
//Accepted Code:
include <bits/stdc++.h>
using namespace std;
const int MAXN = 100;
struct edge {
int num;
char x[MAXN], y[MAXN];
}ap;
typedef edge ElemType;
typedef struct ListPtr {
ElemType data;
ListPtr *next;
}*lists;
int len;
lists head, tail;
void Alloc(lists &p) {
p = (ListPtr *)malloc(sizeof(ListPtr));
p -> next = NULL;
}
void link() {
len = 0;
Alloc(head);
tail = head;
}
void push(ElemType e) {
lists p, r = head;
Alloc(p);
p -> data = e;
while (r -> next != NULL && e.num >= r -> next -> data.num)
r = r -> next;
p -> next = r -> next;
r -> next = p;
len++;
}
void pop() {
len--;
lists p = head -> next;
head -> next = p -> next;
if (p == tail)
tail = head;
free(p);
}
ElemType front() {
return head -> next -> data;
}
int main() {
int num;
char opt[5], x[MAXN], y[MAXN];
link();
int top = 1;
while (~scanf("%s", opt)) {
if (opt[0] != 'P') {
if (!len)
printf("EMPTY QUEUE!\n");
else {
ap = front();
pop();
printf("%s %s\n", ap.x, ap.y);
}
}
else {
scanf("%s%s%d", ap.x, ap.y, &ap.num);
push(ap);
}
}
return 0;
}