在链表上使用 strcmp 进行比较

标签 c linked-list strcmp

我对链表不是很了解,我不知道这是否可能,但我需要这样做:)我有一个加载到结构的链表,我需要比较结构上的所有字符......最好有一个例子:

这是没有链接列表的

结构体

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/

相关文章:

c++ - 循环输入数据

python - 如何为 NI VeriStand 共享库传递带有 ctypes 的数组

java - 垃圾收集 - 孤立的 LinkedList 链接

c - 将参数从动态数组传递到链表会导致覆盖值

c - 调试出现运行时错误的字符串比较部分

c - Windows 创建窗口 API

Java 与 C float : "x * x" differs from "pow(x,2)"?

c - 如何为列表重用代码(或如何为不同类型的结构列表处理 2 个不同的函数)

c - 关于字符串、空字符和strcmp

c++ - 使用 strcmp 和字符串数组