首先,道歉,我试图遵循其他答案,但我不能让它发挥作用。
我在C中编写一个合并排序程序,我有一个函数,它指向链接列表的两个指针并从中创建一个新的合并链表,然后返回新列表。
我尝试了很多变化,但我无法编译。 这是Node结构的定义:
typedef struct node
{
int val;
struct node *next;
} NODE;
这是传递值的函数:
NODE* splitList(NODE *ptr)
{
NODE *startPtr = NULL;
NODE *endPtr = NULL;
NODE *temp = NULL;
NODE *temp2 = NULL;
//fill in startPtr and endPtr with nodes
}
return merge(startPtr,endPtr); //<-- passing startPtr and endPtr
}
这是我传递指针的函数的标题:
NODE * merge(NODE **start, NODE **end)
我从编译器得到的错误是:
“'合并'的冲突类型”
任何人都可以告诉我哪里出错了,我知道'&amp;'和''的组合可以解决这个问题,我尝试了很多组合!我不认为我正在抓住潜在的行为,所以如果有人能帮助解释这将是伟大的。
答案 0 :(得分:0)
merge(&startPtr,&endPtr)
这解决了这个问题。我在文本编辑器中编写了代码并编译了它。它编译它没有任何问题。在找到原型之前,可能已经调用了合并。或者如果您首先定义函数,那么可能您在合并之前编写了splitList。所以splitList无法找到合并功能。