c - 为什么无法识别我的链表类型?

标签 c linked-list

这是我的 C 代码:

#include <stdio.h>
#include <stdlib.h>

typedef struct node * ptr;
typedef struct node {
  int data;
  ptr next;
} item;

void printList(ptr p);

int main() {
  ptr h = NULL;

}

void printList(ptr p) {
  while(p) {
    printf("%d -> \n", ptr -> data);
    ptr = ptr -> next;
  }
}

编译代码时出现 2 个错误:

error: unexpected type name 'ptr': expected expression
            printf("%d -> \n", ptr -> data);
                               ^

error: expected identifier or '('
            ptr = ptr -> next;

我尝试尝试各种更改,但我不明白为什么会出现这些错误。

最佳答案

你指的是结构成员的类型而不是结构成员。

printf("%d -> \n", ptr -> data);
ptr = ptr -> next;

应该是

printf("%d -> \n", p->data);
p = p->next;

关于c - 为什么无法识别我的链表类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41859156/

相关文章:

c - 我正在尝试编写一个通过引用反转链表的函数

java - 如何显示 LinkedList 的所有内容?

c++ - 在没有 FPU 的情况下 float 会怎样?

c - dll 的 dumpbin 输出中的 "virtual address"

c++ - 在READONLY模式下打开数据库时出现SQLITE_CANTOPEN错误

c - 如何为使用 SCons 构建的程序内置 gprof 支持?

java - 指向 Java LinkedList 节点的指针

c - 如何以相反的顺序打印出单向链表?

c++ - 如何将一个链表内容复制到另一个链表

c - 在 Linux 上可选地使用 CUDA