gpt4 book ai didi

比较链表 c 中的节点

转载 作者:行者123 更新时间:2023-11-30 19:11:10 25 4
gpt4 key购买 nike

struct link_node
{
char node_str[ MAX_STR_LEN ];
struct link_node *next;
};

int compare_node( struct link_node *n1, struct link_node *n2)
{
if(n1[0] < n2[0])
{
return -1;
}
else if(n1[0] == n2[0])
{
return 0;
}
else
{
return 1;
}
}

这是我目前用于比较链表中节点的第一个字母的代码。程序没有运行,所以我想确定代码中的错误在哪里。代码看起来没问题吗?请记住,错误可能出现在代码的其他位置。

最佳答案

您需要访问 structnode_str 元素。由于您将指向结构的指针传递到函数中,因此您可以使用 -> 表示法访问结构的元素,例如

int compare_node( struct link_node *n1, struct link_node *n2)
{
if (n1->node_str[0] < n2->node_str[0])
return -1;
// etc...
}

通常,如果第一项小于第二项,则比较函数只需返回“小于 0”;如果两项相等,则返回“0”;如果第一项大于第二项,则返回“大于 0”。在这种情况下,您可以将比较函数简化为:

int compare_node( struct link_node *n1, struct link_node *n2)
{
return n1->node_str[0] - n2->node_str[0];
}

这将对每个字符串的第一个字符进行比较。如果您想比较整个字符串,请使用 strcmp():

int compare_node( struct link_node *n1, struct link_node *n2)
{
return strcmp(n1->node_str, n2->node_str);
}

关于比较链表 c 中的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40580034/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com