我有一个程序,它根据存储在其中的“名称”将结构放置在链表中。
要在列表中找到它们的位置,我需要确定我插入的名称在字母表中是较早还是较晚,然后是其旁边的结构中的名称。
名称在我可以访问的结构内。如果那是更多的工作,我不需要完整的比较,即使只是第一个字母也可以。
谢谢您的帮助!
我有一个程序,它根据存储在其中的“名称”将结构放置在链表中。
要在列表中找到它们的位置,我需要确定我插入的名称在字母表中是较早还是较晚,然后是其旁边的结构中的名称。
名称在我可以访问的结构内。如果那是更多的工作,我不需要完整的比较,即使只是第一个字母也可以。
谢谢您的帮助!
如果您有两个 C 字符串a
和b
,您可以简单地比较它们的第一个元素:
*a == *b
where==
可以是六个关系运算符中的任何一个。
请记住,对于 C 字符串,指针char*
指向字符串中的第一个字符。
strcmp()
比较两个 C 字符串,并告诉您它们的顺序,或者它们是否相同。如果你不关心大小写,你可以使用strcasecmp()
. 这些函数不会比较任何比确定返回顺序所需的字符串。
我不清楚你的问题是什么,但这样的事情会起作用:
if (node1->name[0] <= node2->name[0]) {
...
} else {
...
}
这将比较每个节点中名称的第一个字母。
您可以简单地遍历列表并根据您在传递每个元素时所做的比较将新元素插入正确的位置。最简单的区分大小写的版本可以通过比较字母的数值来完成(例如a[0] < b[0]
),或者如果您想要不区分大小写,您可以将两者都转换为常见的大小写(请参阅ctype.h
)。或者您可以将整个单词与strcmp
.