【发布时间】:2010-10-18 13:50:44
【问题描述】:
为了练习,我一直在研究一种压缩器,它可以执行查找重复部分、制作字典、压缩与霍夫曼编码的事情。
它并没有真正起作用。
其中一个问题是,出于某种原因,我的排序算法会从字典中删除关键字。我认为问题出在交换例程中,但我不确定。 (此例程交换相邻的关键字, next 是 current->next )。
我确实有一个静态关键字 * head;
void swap(keyword * current, keyword * next) {
keyword * prev = current->prev;
if (prev){
prev->next = next;
next->prev = prev;
} else { /* no prev - current is head */
head = next;
next->prev = 0;
}
current->prev = next;
current->next = next->next;
next->next = current;
}
发现这有什么问题吗?
【问题讨论】:
-
如果
next始终是current->next,你不能删除那个参数并为自己节省一些潜在的麻烦吗? -
你试过在调试器中一步一步做吗?
-
是的 - 花括号不在下一行;-)
-
...是的,我可以做到,不是吗?呵呵。
标签: c struct linked-list