如何将函数返回的指针(节点)存储到main?

时间:2014-11-10 21:10:36

标签: c linked-list

我目前完成了我的函数来反转链表,但是当我返回一个指向新链表头部的指针时,我收到错误,因为我将错误存储在我的主链中。有人可以向我解释存储和打印新链接列表的正确语法吗?

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;
   }

2 个答案:

答案 0 :(得分:2)

LL_t reverse(LL_t* ls) { }

采用指针,但返回结构。你需要:

LL_t *reverse(LL_t* ls) { }

答案 1 :(得分:2)

您遇到问题的原因是您的函数设置为返回LL_t节点,而不是指向它的指针。通过修复函数声明,您不应该面对任何其他错误(至少从提供的代码中):

LL_t* reverse(LL_t* ls) { ...