抽象数据类型(ADT)

  1. 为类型的属性和可对类型执行的操作提供一个抽象的描述,这个米阿叔不受任何实现的约束,甚至不受任何特定编程语言的约束,这样一种正式的抽象描述被称为抽象数据类型。
  2. 开一个实现该ADT的编程接口,即说明如何存储数据,并描述用于执行所需操作的函数集合,比如在c中,同时提供一个结构的定义和用来做做该结构的函数原型。
  3. 编程代码来实现这个接口。

列表:

列表

类型名称

简单列表

类型属性

可保存一个项目序列

类型操作

把列表初始化为空列表

确定类表是否为空

确定列表是否已满

确定列表中的个数

想列表末尾添加项目

遍历列表,处理列表中每个项目

清空列表

当用LIST movies时,我们是在建立一个列表,而不是一个指针,这一点是概念上要注意。

链表是一种结构,如图所示,链表是很多数据结构的基础。

每个大块表示链表的一个节点,通常我们不能直接访问节点。红色部分是表达链表的地址,并非实际的一部分。

绿色部分表示节点的内容,青色部分表示存放指向下一个节点的地址。

所以链表可以这么表示

typedef struct node

{

ITEM item;

node * next;

}NODE;

链表有链表头的概念,item是节点的内容。

如图所示二叉树

二叉树也有,节点内容,左字节点,右子节点的概念。

在左节点中的项目是父节点中项目的前序项,在右节点中的项目是父节点中的后续项,这种关系存在每一个有子节点的节点中。

而且,所有以左节点为祖先的项目都是该左节点的父节点项目的前序项

所有以右节点为祖先的都是该右节点的父节点的后续项。

添加项目:

首先检查树中是否还有空位给新节点,是否有相同的项目,如果通过前两步检查,就可以创建一个新的节点,将项目复制到节点中,并设置此节点的左右指针为null。然后更新tree结构的size成员,已记录添加了一个新项目,接下来,要找出吧此节点放在书中的涩会那么位置,如果数位空,就要将根节点指针指向该新节点,否则在书中查找到放置该信节点的位置,。

它需要判断节点去向何方并添加,具体地,他需要比较新项目和根项目来决定新项目要天骄到做字数还是有字数,递归实现这种搜索算法。

当root->left或root-》right为null时函数第递归调用序列结束。

在写一个堆栈之前要想,到底要不要边界检测呢?要想,既然我们做的如此强大的模拟,为什么不要边界检测呢?

typedef struct item

{

int b[2];

}ITEM;

typedef struct node

{

ITEM items;

struct node * next;

}NODE;

typedef struct stack

{

NODE * head;

NODE * end;

int ge_shu;

}STACK;

类型名称

堆栈

类型属性

可保存一个规则的项目序列,

类型属性

把堆栈初始化为空堆栈

确定堆栈是否为空

确定堆栈是否已满

确定堆栈中的项目数

向堆栈顶添加项目

从堆栈顶删除项目,和恢复项目?

清空堆栈

看起来是我们不需要一个堆栈底部的指针,但是这样的话,我们就无法检测溢出。

转载于:https://www.cnblogs.com/likeyiyy/p/3270876.html

【c_prime_plus】第十七章笔记相关推荐

  1. 系统集成项目管理工程师(软考中级)—— 第十七章 项目沟通和干系人管理 笔记分享

    前言 现在分享一些笔记给大家,希望能够帮助大家并顺利通过软考. 幕布地址:第十七章 项目沟通和干系人管理 - 幕布 项目沟通 概述 大数据 ito 沟通管理4w1h ITO2 沟通概念 沟通渠道 公式 ...

  2. 《网络安全工程师笔记》 第十七章:物理层(physical layer)

    注:本笔记来自温晓飞老师的网络安全课程 第十七章:物理层(physical layer) 第一章:虚拟化架构与系统部署 第二章:IP地址详解 第三章:进制转换 第四章:DOS基本命令与批处理 第五章: ...

  3. 《Dreamweaver CS6 完全自学教程》笔记 第十七章:Spry 框架技术

    文章目录 第十七章:Spry 框架技术 17.1 Spry 菜单栏 17.1.1 插入 Spry 菜单栏 17.1.2 设置 Spry 菜单栏的属性 17.1.3 设置菜单项的尺寸 17.2 Spry ...

  4. 读书笔记:汇编语言 第三版 王爽 清华出版社 章十六 章十七 章十八

    第十六章 直接定址表16.1 描述了单位长度的标号地址标号,表征了位置的偏移地址label:数据标号,表征了一段内存空间的物理地址和长度,增强型地址标号段地址,数据标号所在段的关联段寄存器,assum ...

  5. 【XJTUSE 计算机组成与结构笔记】第十七章 并行处理

    文章目录 第十七章 并行处理 Key Points 17.1 多处理器组织 17.2 对称多处理器Symmetric Multiprocessors 组织 分时共享总线 多端口内存 SMP操作系统设计 ...

  6. 第十七章 apache 性能调优

    前言 本文档基于对apache的学习整理而成的笔记.本文档详细的记录了apache各种应用,以及一些个人的理解,如果偏差,请和我联系,以在下一个版本中进行更正.其中大部分文档均来自网络,感谢网络上各位 ...

  7. 【正点原子FPGA连载】 第十七章 HDMI彩条显示实验摘自【正点原子】DFZU2EG/4EV MPSoC 之FPGA开发指南V1.0

    1)实验平台:正点原子MPSoC开发板 2)平台购买地址:https://detail.tmall.com/item.htm?id=692450874670 3)全套实验源码+手册+视频下载地址: h ...

  8. 鸟哥linux私房菜第6章笔记

    鸟哥linux私房菜第6章笔记 文件权限 修改 chgrp [-R] groupname filename //修改文件所属组chown [-R] ownername[:groupname] file ...

  9. 第十七章 大规模机器学习-机器学习老师板书-斯坦福吴恩达教授

    第十七章 大规模机器学习 17.1 大数据集学习 17.2 随机梯度下降 17.3 mini-batch 梯度下降 17.4 随机梯度下降收敛 17.5 在线学习 17.6 减少映射与数据并行 17. ...

最新文章

  1. 在多个游戏视图间切换环境准备
  2. Lockey的沙雕低错集锦(未完待续~自己提升用)
  3. 【Python入门】一个有意思还有用的Python包-汉字转换拼音
  4. 奶茶妹妹亏本甩卖悉尼豪宅 当年与刘强东澳洲办盛大婚礼
  5. how to execute tcode during startup
  6. linux 线程带参数,Linux中多线程编程并传递多个参数的简单例子
  7. 数据集_自动驾驶数据集
  8. Teamcenter 开发中的一些问题
  9. 练手:微博热搜小爬虫
  10. 地图整饰-框架与格网
  11. 自学鄙视链顶端的王者
  12. VMware workstation 16 pro下载、安装(官网)
  13. python图片爬虫,指定关键字爬取Google图片+搜狗图片
  14. CSDN绑定GitHub详细步骤,完成后可以得勋章哦,亲们国庆假期愉快!
  15. 爬虫 + 自动化利器 selenium 之自学成才篇(二)
  16. 宅男福利!爬虫实战,爬取原神真人c图片并保存,谁的老婆快抱走
  17. android开发照相机啊,Android照相机开发详解(一)
  18. 安徽省美术作品版权登记技巧,申请了商标还要申请美术作品版权吗?
  19. 正则表达式中,如何在任意匹配字符后面加上原字符和特定内容
  20. JavaScript - 你见过 [].slice.call() 吗?

热门文章

  1. dubbo k8s 服务发现_服务化改造实践(二)| Dubbo + Kubernetes-阿里云开发者社区
  2. 多语言软件gettext解决方案weix_图像编辑软件 Aurora HDR 2019 多语言免费版
  3. oracle 日期改字符格式_oracle怎么把数值型日期转换成日期字符型
  4. 怎么用python爬取整个网站_5分钟学会Python爬取整个网站
  5. 开发日记 20210316
  6. Kali国内源更新sources.list
  7. android从放弃到精通 第五天 excellent
  8. DNS隧道工具使用 不过其网络传输速度限制较大
  9. python3 打印完整报错信息 以flask 为例
  10. PyCharm编辑器关于环境的配置