新浪博客

循环列表的bug

2022-05-28 18:00阅读:
今天写了个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));
}
}

我的更多文章

下载客户端阅读体验更佳

APP专享