我有一个家庭作业问题,在下面的引号中描述。这是我必须实现的简单函数。在网上查看后,我只是找到了具有类似实现但没有解释的函数。
对我的代码进行评分的程序只说"wordCmp 在使用时失败"。所以基本上关于如何以不同的方式解决这个问题的任何建议?只是评分员给出了如此广泛的回应,我不确定它有什么问题。
int wordCmp (struct inode* n1, struct inode* n2(
返回一个整数,指示 中的字符串之间的关系 两个节点:大于零的值表示第一个节点 不匹配的字符在 n1-> 单词中的值大于 n2->字;小于零的值表示相反的情况。您可以 使用 strcmp 实现此功能。
struct inode { char *word; }; int wordCmp (struct inode* n1, struct inode* n2){ return strcmp(n1->word, n2->word); }
基于问题作者的编辑,解决方案是:
我制作了等于节点中单词值的指针,并且 然后比较了它们。我不知道为什么它有效,尽管老实说它 对我来说似乎是一样的。
它在讲义中说我们无法访问节点字段 径直;不知道为什么...,所以我只是实现了以下代码,所以 我不必直接访问它。它做完全相同的事情...
int wordCmp (struct inode* n1, struct inode* n2){ char* wordOne = nodeGetWord(n1); char* wordTwo = nodeGetWord(n2); return strcmp(wordOne, wordTwo); } nodeGetWord(struct lnode *node){ return node->word; }
这就是我所做的一切,它奏效了...对不起,如果这看起来很愚蠢,但它是 评分员拿了什么。
你检查过它们是否相等吗? 如果 strcmp 是相同的字符串,则返回 0。 从您作为作业的内容来看,除了字符串相等时,您似乎具有正确的比较。
添加一些逻辑以确定字符串是否相同,返回一个遵循排序选择的值。