c-链表把我的脑子搞得一团糟.我该怎么做



我正试图使用链表来积累我对C中指针的知识。所以,我写了一个小例子,但当我编译它时,我遇到了一个错误,我似乎无法理解:

In function 'append_node': 
error: request for member ‘next’ in something not a structure or union

通过引用访问(或传递)结构的正确方法是什么?

#include <stdio.h>
#include <stdlib.h>
struct node {
  int val;
  struct node *next;
};
static int append_node(int val, struct node **head) {
  struct node *new_node;
  new_node = (struct node *) malloc(sizeof(struct node));
  new_node->val  = val;
  new_node->next = NULL
  *(head)->next = new;
  return 0;
}
int main() {
  int i;
  struct node *head;
  struct node *curr;
  head = NULL;
  curr = (struct node *) malloc(sizeof(struct node));
  for(i = 1; i <= 10; i++) {
      append_node(i, &curr);
      head = curr;
  }
  curr = head;
  while(curr) {
      printf("%dn", curr->val);
      curr = curr->next ;
  }
  return 0;
}

任何帮助都会很棒!

我能假设你在这一行得到错误吗?

  *(head)->next = new;

我认为你需要做一个微不足道的改变:

  (*head)->next = new;

由于head是一个指向指针的指针,所以当您取消引用它时,您会得到一个指针。->next对该指针进行操作。

两个问题:

末尾缺少;

new->next = NULL

并更改

*(head)->next = new;

(*head)->next = new;

试试这个:

(*head)->next = new_node;

**head转换为*head,然后调用其上的成员。

相关内容

  • 没有找到相关文章

最新更新