我正在尝试创建一个链接列表,我正在检查第二个或其他第二个之后是否已经存在于前面的元素中
例如我想添加一个b c a
它应该通知a已经在链表中
不确定如何解决这个逻辑
到目前为止,这正是我在考虑的问题
...创建结构
typedef struct check
{
char *names;
struct check *next;
} HERE;
some_func(*char name)
{
HERE *all = malloc(sizeof(HERE));
all->names =
all->next = NULL;
while(all != NULL)
{
// if strcmp ...
}
}
答案 0 :(得分:0)
执行此操作的一种方法是对列表进行排序(如果您正在使用实时用户输入,则标记数组插入排序是明智的),并在找到新条目的静止位置后,检查如果之前或之后的条目(取决于您的排序代码,您只需要检查一个或另一个)是相同的。这只需要比插入排序搜索更多的数据读取,并且没有额外的移动(甚至是标记值),因此应该对排序时间添加很少,并避免代码过度复杂化。