今天写了个merge多个队列的代码,使用优先队列, 发现一个bug。。死循环了。。
while (!pq.empty()) {
dlink link = pq.top(); // smallest one, 第2次进来, link变了, tail直接变了!!!
pq.pop();
tail->next = &link; // &link
第二次进来,就会自己指向自己了。
tail = tail->next;
// cout << link.data << ' ';
if (link.next) {
// cout << link.next->data << ' ' << endl;
pq.push(*(link.next));
}
}
while (!pq.empty()) {
dlink link = pq.top(); // smallest one, 第2次进来, link变了, tail直接变了!!!
pq.pop();
tail->next = &link;
tail = tail->next;
// cout << link.data << ' ';
if (link.next) {
// cout << link.next->data << ' ' << endl;
pq.push(*(link.next));
}
}
