0

我有一个在下面引用中描述的作业问题。这是一个我必须实现的简单功能。在网上看了之后,我只是找到了具有类似实现但没有解释的功能。

对我的代码进行评分的程序只是说“wordCmp 使用时失败”。所以基本上关于如何以不同的方式处理这个问题的任何建议?只是评分员给出了如此广泛的回应,我不确定它可能有什么问题。

int wordCmp (struct inode* n1, struct inode* n2)

返回一个整数,表示两个节点中的字符串之间的关系:值大于零表示第一个不匹配的字符在 n1->word 中的值大于在 n2->word 中的值;小于零的值表示相反。您可以使用 strcmp 来实现此功能。

struct inode {
  char *word;
};

int wordCmp (struct inode* n1, struct inode* n2){
     return strcmp(n1->word, n2->word);
}
4

2 回答 2

1

根据问题作者的此编辑,解决方案是:

我创建了等于节点中单词值的指针,然后将它们进行比较。我不知道为什么它会起作用,但老实说,这对我来说似乎是一样的。

它在讲义中说我们无法直接访问节点字段;不知道为什么......,所以我只是实现了以下代码,所以我不必直接访问它。它做同样的事情......

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;
}

这就是我所做的一切,它奏效了……对不起,如果这看起来很愚蠢,但这是评分员的做法。

于 2013-10-24T17:26:43.570 回答
0

你检查过它们是否相等吗?如果它们是相同的字符串,strcmp 将返回 0。从您提交的作业来看,您似乎进行了正确的比较,除非字符串相等。

添加一些逻辑来确定字符串是否相同,返回一个遵循您的排序选择的值。

于 2013-10-13T01:13:17.640 回答