我对链表不是很了解,我不知道这是否可能,但我需要这样做:)我有一个加载到结构的链表,我需要比较结构上的所有字符......最好有一个例子:
这是没有链接列表的
结构体
typedef struct x{
char name[100];
}x;
typedef x Info;
typdef struct Elem{
Info node;
struct Elem*next;
}Element;
for(i=0;i<100;i++){
if(strcmp(a.name[i],a.name[i+1])==0){
printf("Same name\n");
}
}
else
printf("Diff name\n");
现在我需要做这样的事情,但是使用链接列表
最佳答案
首先:int strcmp ( const char * str1, const char * str2 ) 比较两个C 字符串(char 指针)。这意味着 a.name[i] 应该是一个 char 指针而不是一个 char!确保情况确实如此(即确保 a.name 是 c 字符串数组的数组,而不是字符数组)。
其次,如果是前一种情况,您的代码将仅将字符串 i 与字符串 i+1 进行比较。它不会将所有字符串相互比较。
无论如何,看起来您并没有以正确的方式做您想做的事情。我猜你想要一个像这样定义的结构:
struct example {
char * name;
// other members of choice
example * next;
}
名称、其他成员和下一个指针的占位符,以启用链表数据类型。这样您就可以将名称与以下内容进行比较:
while (list->next != 0 && list->next->next != 0) {
if (strcmp(list->name, list->next->name) == 0) // do something;
else // do something else;
}
或者如果您想将所有字符串相互比较,则使用双循环。
关于在链表上使用 strcmp 进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6528366/