「已注销」 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日

悬赏问题

  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
  • ¥15 神经网络怎么把隐含层变量融合到损失函数中?