【问题标题】:Sort Names Alphabetically in C在 C 中按字母顺序对名称进行排序
【发布时间】:2012-02-18 00:53:50
【问题描述】:

我有一个 C 结构,其中包含一个人的联系信息,例如姓名、电话号码等。“联系人”结构包含在一个链接列表中。我需要以某种方式插入节点,使链表按字母(升序)顺序排序。

我可以调用 C 中的内置排序函数吗?还是我必须编写自己的排序函数?如果有内置函数,我能否举个例子说明如何在链表中的结构上调用它?

【问题讨论】:

  • 如果你有一个 C++ 编译器,你可以看看std::list<T>::sort() 的实现,它可能与你必须编写的非常接近。它将完全包含在头文件中。
  • 你的作业是基于按排序顺序构建链表还是在构建列表后一般排序?如果您只是构建一个链表,那么您需要查找“插入排序链表”,您可以在其中将排序作为列表插入的函数来处理。
  • @jmquigley 查看更多代码,看来我必须根据名称按字母顺序排列的位置将新项目插入到链接列表中。所以我将像这样构建链接列表。有没有一个例子你知道我可以在哪里查看使用节点根据字母顺序插入新项目的东西?

标签: c sorting struct linked-list


【解决方案1】:

“列表”没有标准的排序方法。最接近的是qsort(它确实可以对用户定义的对象进行排序),但它只适用于连续范围(数组等)。

您可能必须实现自己的排序过程或使用数组而不是列表。

【讨论】:

    【解决方案2】:

    这是一个执行插入排序链表的代码示例。这不是对您的剪切和粘贴,但会向您展示在这种类型的插入中会发生什么:

    http://www.c.happycodings.com/Sorting_Searching/code8.html

    关注“insert()”调用。我没有编译这段代码来测试它,但我读了一遍,它看起来对我来说是正确的。它显示了如何搜索列表和指针调整。你应该可以通过这段代码解决你的问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-10-13
      • 2019-06-25
      • 2018-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      相关资源
      最近更新 更多