Windows Message Queue教程

2019-07-20 19:36:55
<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;

}

当前页面是本站的「Baidu MIP」版。发表评论请点击:完整版 »