我有一个程序,根据它们存储在其中的“名称”将结构放置在链接列表中。按字母顺序排列[C]
要找到他们在列表中的位置,我需要弄清楚im插入的名称是在字母表中的早些还是晚一些,然后是在它旁边的结构中。
名称在结构中,我可以访问。 我不需要一个完整的comaparison,如果这是更多的工作,即使只是第一个字母是好的。
感谢您的帮助!
我有一个程序,根据它们存储在其中的“名称”将结构放置在链接列表中。按字母顺序排列[C]
要找到他们在列表中的位置,我需要弄清楚im插入的名称是在字母表中的早些还是晚一些,然后是在它旁边的结构中。
名称在结构中,我可以访问。 我不需要一个完整的comaparison,如果这是更多的工作,即使只是第一个字母是好的。
感谢您的帮助!
这不是我清楚你的问题是什么,但像这样的工作:
if (node1->name[0] <= node2->name[0]) {
...
} else {
...
}
这将比较名称的第一个字母在每个节点中。
如果你有两个C字符串,a
和b
,你可以简单地比较它们的第一要素:
*a == *b
哪里==
可以是任何六个关系运算符的。
请记住,对于C字符串,char*
指向字符串中的第一个字符。
strcmp()
比较两个C字符串,并会告诉你它们在什么顺序,或者它们是否相同。如果你不关心案件,你可以使用strcasecmp()
。这些函数不会比确定返回顺序所需的更多字符串。
但请注意,strcasecmp不是标准C. – Arkku 2010-04-01 23:53:37
您可以简单地循环访问列表,然后根据您在传递每个元素时进行的比较在正确的位置插入新元素。最简单的区分大小写的版本可以通过比较字母的数字值(例如a[0] < b[0]
)来完成,或者如果您希望区分大小写(请参阅ctype.h
),则可以将它们都转换为常见格式。或者你可以将整个单词与strcmp
进行比较。
不要忘记检查NULL – Andrey 2010-04-01 23:46:12