我目前完成了我的函数来反转链表,但是当我返回一个指向新链表头部的指针时,我收到错误,因为我将错误存储在我的主链中。有人可以向我解释存储和打印新链接列表的正确语法吗?
typedef struct Node {
int val;
struct Node * next;
}LL_t;
LL_t reverse(LL_t* ls) // passing me a head
{
\\ my code
return ls; // pretty sure this is how I return the new head node
}
int main() {
\\ my code
LL_t *p = reverse(head); // not working, giving me these weird incompatible errors.
for ( i = 0; i < 9; i++ )
{
printf( "*(p + %d) : %d\n", i, *(p + i));
}
return 0;
}
更改变量指针p并尝试printf后,这是我的最后一个错误
int * p; p =反向(头部)
错误;
main.c:42:6:警告:从不兼容的指针类型分配[默认启用] p =反向(头);
EDIT2:
我尝试过这种做法,但不适合我:
for (p->val != NULL)
{
printf("%d\n", p->val);
p->val = p->next;
}
答案 0 :(得分:2)
LL_t reverse(LL_t* ls) { }
采用指针,但返回结构。你需要:
LL_t *reverse(LL_t* ls) { }
答案 1 :(得分:2)
您遇到问题的原因是您的函数设置为返回LL_t节点,而不是指向它的指针。通过修复函数声明,您不应该面对任何其他错误(至少从提供的代码中):
LL_t* reverse(LL_t* ls) { ...