Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 使用指针和;两个结构阵列_C_Algorithm_Sorting_Data Structures_Linked List - Fatal编程技术网

C 使用指针和;两个结构阵列

C 使用指针和;两个结构阵列,c,algorithm,sorting,data-structures,linked-list,C,Algorithm,Sorting,Data Structures,Linked List,我正在开发一个电话簿应用程序,我想根据客户端的名称对代表每个条目的节点进行排序。我想使用桶排序算法,其中我有两个链表结构数组 问题是,我不想使用删除和构造来在存储桶中移动节点 有没有更简单的方法,使用指针?在存储桶中移动指针可能会容易得多,但我不知道如何实现它。我是用C语言做这件事的,但是欢迎用其他语言提供帮助 非常感谢您的帮助。这取决于条目的存储方式。如果您将每个条目存储在一个链表单元格中,那么只需将元素从原始列表中移出并放入存储桶中,就可以使用恒定的内存开销进行存储桶排序。这需要使用指针和指

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

问题是,我不想使用删除和构造来在存储桶中移动节点

有没有更简单的方法,使用指针?在存储桶中移动指针可能会容易得多,但我不知道如何实现它。我是用C语言做这件事的,但是欢迎用其他语言提供帮助


非常感谢您的帮助。

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


有一个问题-您希望使用bucket sort对名称进行排序有什么原因吗?您可以使用bucket sort对字符串进行排序,但要做到这一点,几乎肯定需要两个以上的bucket;也许你有一个字母表的字母,一个是“这里没有字母”。如果你有一个链表,你可能会考虑研究合并排序作为一种可能性,因为它不太难实现,并且有很好的运行时保证。我使用数组的每个索引作为alph的字母。也就是说,我有两个数组,每个数组的大小是26+1,其中一个是临时数组。在您建议的情况下,我是否需要从列表中删除任何单元格?或者我只是把一个指针指向那个单元格,然后把指针移动到桶的array@Nataly-是的,您需要从列表中删除元素。Bucket sort的工作原理是将原始元素从列表中拉出,根据某种标准将它们放入Bucket中,然后将它们移回原始列表中。由于您所做的操作更接近于基数排序,因此在处理完每个字符串之前,您会不断重复此操作。您使用什么语言编写此操作?