2011-02-10 51 views
4

我正在使用电话簿应用程序,我希望根据客户端的名称对表示每个条目的节点进行排序。我想使用桶排序算法,其中有两个链表的结构数组。使用指针和两个数组结构排序使用结构

问题是我不想使用删除和构造来移动节点通过桶。

有没有更简单的方法,使用指针?移动指针通过桶可能会更容易,但我不知道如何实现它。我在C中做这个,但是欢迎任何其他语言的帮助。

我感谢您的帮助。

+0

你用什么语言写这个? – 2011-02-10 22:24:02

+0

我正在使用C语言 – Nataly 2011-02-10 23:14:48

回答

2

这实际上取决于条目的存储方式。如果要将每个条目存储在链接列表单元格中,那么只需将元素从原始列表中移出并存入存储区,就可以仅以一个常量的内存开销进行存储区排序。这将要求你使用指针和指针重新连线,但它并不像听起来那么困难。您只需将单元格从主列表中拼接出来,然后放入存储桶中即可。

一个问题 - 是否有一个原因,你想使用桶排序来排序名称?您可以使用桶排序来排序字符串,但要做到这一点,您几乎肯定需要两个以上的桶;大概你会有一个字母表中的每个字母和一个“这里没有字母”。如果你有一个链表,你可能会考虑调查合并排序的可能性,因为它不难实现,并且具有出色的运行时间保证。