1 typedef char ListData;
 2 //表示以后可以用ListData来代替char类型
 3
 4 typedef struct node{     //此处node,只在结构体中出现和使用
 5      ListData data;
 6      struct node *link;
 7 }ListNode;          //表示将整个结构体命名为ListNode,也就是说现在ListNode就是一种像int、char等的数据类型了,可以用它来定义别的节点
 8
 9 typedef ListNode *LinkList;      //此处,表示以后可以用*LinkList来代替ListNode类型,其中LinkList表示的是指针,*LinkList表示的是指针所指的节点,即ListNode
10
11 LinkList first;     //表示定义了一个指针,叫做first,但不能说此时它就是头指针了,首先还要进行空间分配,其次只有在它的基础上继续插入别的指针并且始终保持它在最前面才行
12
13
14 ==================以下要好好理解=====================
15
16 ListNode *p;     //定义了一个指针,指向*p节点
17
18 LinkList p;     //和上式效果相同,直接定义了一个指针
19
20 所以说,
21 ListNode *p = first;
22 和
23 ListLink first;
24 中的first都是指针,p也是指针
25
26 更好的写法是
27 ListNode* p = first;
28
29 类比:
30 typedef int* intPointer;
31
32 int* p, *q;
33 等价于
34 intPointer p, q;
35
36 注意:     int* p 等价于 int *p
37
38 补充:
39 //指针可以理解为一段地址,指向着某个element
40
41 //定义一个指针
42 int* pCount;
43 char* pLetter;
44
45 //&表示取地址符号
46 pCount = &count;
47
48 //由指针得到所指内容,用*符号
49 int a = *pCount;

另外:

1.队列中的头节点是空的,详见下面的删除头节点的函数

 1 Status DeQueue_L(LinkQueue &Q, QElemType &e)  {     //如果想要真正的改变的话,就使用取地址符&,通过地址来对真正的进行操作,而非局部范围内
 2  //若队列不空,则删除Q的队头元素结点,用e返回其值,并返回OK;否则返回ERROR
 3         if (Q.front = =Q.rear) return ERROR;
 4              //若队列空,返回ERROR
 5         p=Q.front->next;             // p指向队头元素结点
 6         e=p->data;
 7         Q.front->next=p->next; // 修改链队列头结点指针
 8         if(Q.rear= =p)  Q.rear=Q.front;
 9 // 对于链队列只有一个元素结点的情况,要同时修改队尾指针
10         free(p);
11         return OK;
12 }

转载于:https://www.cnblogs.com/QingHuan/p/4948843.html

【数据结构】某些难理解点相关推荐

  1. 防劝退!数据结构和算法难理解?可视化动画带你轻松透彻理解!

    大家好,我是 Rocky0429,一个连数据结构和算法都不会的蒟蒻- 学过数据结构和算法的都知道这玩意儿不好学,没学过的经常听到这样的说法还没学就觉得难,其实难吗?真难! 难在哪呢?当年我还是个小蒟蒻 ...

  2. 重温数据结构:深入理解红黑树

    读完本文你将了解到: 什么是红黑树 黑色高度 红黑树的 5 个特性 红黑树的左旋右旋 指定节点 x 的左旋 右图转成左图 指定节点 y 的右旋左图转成右图 红黑树的平衡插入 二叉查找树的插入 插入后调 ...

  3. Opengl-基本概念-转换矩阵坐标系(最难理解的两章)

    前言 可能这是Opengl学习的时候最难理解的地方,很多人也因为这个地方放弃了.但是我觉得,我们可以不明白有些矩阵是如何推到出来的,但是我们要明白一些简单的矩阵为什么可以做到从一个坐标系到另一个坐标系 ...

  4. python装饰器功能是冒泡排序怎么做_传说中Python最难理解的点|看这完篇就够了(装饰器)...

    https://mp.weixin.qq.com/s/B6pEZLrayqzJfMtLqiAfpQ 1.什么是装饰器 网上有人是这么评价装饰器的,我觉得写的很有趣,比喻的很形象 每个人都有的内裤主要是 ...

  5. Docker 概念很难理解?一文搞定 Docker 端口绑定

    作者 | Dieter Jordens 译者 | 苏本如,责编 | 夕颜 出品 | CSDN(ID:CSDNnews) 以下为译文: 作为初级开发人员的你,是不是参加过这样的面试,在面试中面试官希望你 ...

  6. 聊天机器人最难理解的 10 个词汇

    简评:现在,越来越多的「聊天机器人」凭借着人工智能能与人类对话,甚至编写新闻.人们该如何判断对方是一个血肉之躯,还是一个可笑的算法?又该如何判断一个小说故事是由一台机器编写的,而不是由一位真正的人类作 ...

  7. Javascript之旅——第十站:为什么都说闭包难理解呢?

    原文:Javascript之旅--第十站:为什么都说闭包难理解呢? 研究过js的朋友大多会说,理解了js的原型和闭包就可以了,然后又说这些都是js的高级内容,然后就又扯到了各种神马的作用域...然后不 ...

  8. 西方人很难理解,为什么中国普通人对华为抱有那么大的好感?

    中国人普遍有敝帚自珍的情结,何况华为不是敝帚,比旧扫帚强多了,可能是近现代中国人能拿得出手的少数几个公司,堪比金箍棒. 西方人很难理解,一个在他们眼中威胁通讯安全,很可能在产品中留有技术后门的企业,为 ...

  9. 为什么说爱因斯坦场方程难理解呢,你一看就明白了

    导读:为什么说爱因斯坦场方程难理解呢,你一看就明白了.广义相对论是研究物质引力相互作用的理论,其最本核心的内容就是引力场方程: 为什么说爱因斯坦场方程难理解呢,你一看就明白了 别看这个引力场方程形式上 ...

最新文章

  1. 新的机器学习特性包含Python
  2. Vim Vundle 插件管理器
  3. Spiral Matrix
  4. mmdetection2.3.0版本安装过程,以及训练、测试、可视化等(亲测好用,很顺利)
  5. CRFsuite:CRF 工具包及sklearn-crfsuite
  6. 关于 ng-template 通过 @input 传入另一个 Component 不能工作的问题调试
  7. php 在函数里打开链接,JavaScript中打开链接的几种方法介绍
  8. php5.3 延迟静态绑定 static关键字
  9. MarkDown基础语法记录
  10. 经常吃番茄对身体有什么影响?
  11. CSM300调试心得
  12. 图片放大后不清楚怎么办?
  13. Android密码明文显示和星号显示切换
  14. python制作模型排放清单_机动车尾气污染物排放模型研究综述.pdf
  15. JAVA用OpenCV做AI图片处理
  16. Chrome 扩展程序——LastPass:密码管理工具
  17. 网站后台——用户上传图片剪切
  18. 数据库增量备份 - DB INCR DB FULL
  19. Shell之awk命令
  20. 【Ajax】第一节 初始Ajax

热门文章

  1. c语言编程存航线,C语言编程飞机订票系统如何设计?
  2. android打开wav格式,FileNotFoundException从Android资产中打开wav文件
  3. java怎么求两组整数的或集,确定整数是否在具有已知值集的两个整数(包括)之间的最快方法...
  4. java jdk 1.8 配置_Java开发环境jdk 1.8安装配置方法(Win7 64位系统/windows server 2008)...
  5. python在word中的应用_不能在worddoc中使用docx python应用表样式
  6. nginx php 大小写问题,Nginx实现url请求不区分大小写
  7. mvc模型中MySQL类_Mvc5 EF6 CodeFirst Mysql (二) 修改数据模型
  8. canal同步mysql到kafka_使用Canal同步MySQL数据到Kafka 得到的数据中sql字段无值-问答-阿里云开发者社区-阿里云...
  9. mysql编码不对_MySQL编码不一致导致乱码问题总结
  10. resultset mysql_MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)...