「已注销」 2022-09-08 19:20 采纳率: 90.2%
浏览 16
已结题

队列的链式存储实现的代码理解

问题遇到的现象和发生背景

只学习过指针与结构的基础,可以理解链表后面的内容,但看不太懂开头这些定义
比如这是一段在用单向链表实现队列存储的定义部分,
①为什么在struct Node定义阶段出现struct Node,是什么意思(是定义结构指针的意思吗)
②为什么在struct QNode定义阶段用的还是struct Node,为什么不用struct QNode
③后面用typedef把struct QNode替换为Queue的语句中为什么加是作为新符号的名字的一部分还是说这是个指针?
④最后一行Queue PtrQ为什么前面就不带

(初学,这一部分实在有些不太理解,请多指教,感谢)

问题相关代码,请勿粘贴截图
struct Node{
  ElementType Data;
  struct Node *Next;
};
struct QNode{
  struct Node *rear;
  struct Node *front;
};
typedef struct QNode *Queue;
Queue PtrQ;

  • 写回答

2条回答 默认 最新

  • .魚肉 2022-09-08 19:40
    关注

    ①你的猜想是正确的,它就是定义了一个结构体指针,
    ②定义什么都是看他的作用来定义,QNode就是存储了一个Node节点的信息,这可能会存放该节点上一个节点以及下一个节点的地址
    ③typedef就是给这个结构体起别名,既然是别名那他必须满足表示符命名规则(字母数字下划线),没错它直接把结构体起了一个指针的名字(Queue还是个指针)
    ④既然Queue类型已经是指针了,定义一个新的指针变量为何还需要*来标识PtrQ是个指针呢
    看下面测试,他俩内存字节数都是8,明显是一个指针嘛。

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月16日
  • 已采纳回答 9月8日
  • 修改了问题 9月8日
  • 创建了问题 9月8日