十五、数据结构

1 定义

指的是数据在计算机中存储的结构及存储的方式。

2 分类

2.1 数组

数组的特点:在内存中是连续的,通过索引可以访问到数组中的每一个元素。

2.2 栈

栈的特点:先进后出

在这里插入图片描述

栈的使用

// 新建栈
Stack<Character> stack = new Stack<>();

栈的方法

Modifier and TypeMethod and Description
booleanempty() 测试此堆栈是否为空。
Epeek() 查看此堆栈顶部的对象,而不从堆栈中删除它。
Epop() 删除此堆栈顶部的对象,并将该对象作为此函数的值返回。
Epush(E item) 将项目推送到此堆栈的顶部。
intsearch(Object o) 返回一个对象在此堆栈上的基于1的位置。

相关例题:
给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]'的字符串 s ,判断字符串是否有效。有效字符串需满足:

  • 左括号必须用相同类型的右括号闭合。
  • 左括号必须以正确的顺序闭合。

2.3 队列

队列特点:先进先出

在这里插入图片描述

2.4 链表

链表在计算机中的存储地址是不连续的。

  1. 单向链表

在这里插入图片描述

  1. 双向链表

在这里插入图片描述

  1. 循环链表

在这里插入图片描述
数组与链表的区别:

  • 数组:查询效率高,插入、删除都包含了移位操作,因此效率低。
  • 链表:查找效率低,插入、删除效率高。

2.5 二叉树

  1. 完全二叉树

若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。

  1. 满二叉树

除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。

  1. 二叉树的遍历
  • 前序遍历
  • 中序遍历
  • 后续遍历

在这里插入图片描述
二叉树的性质:

  • 性质1:二叉树的第i层上至多有2^(i-1)(i≥1)个节点 。
  • 性质2:深度为h的二叉树中至多含有2^h-1个节点 。
  • 性质3:若在任意一棵二叉树中,有n0个叶子节点,有n2个度为2的节点,则必有n0=n2+1 。
  • 性质4:具有n个节点的完全二叉树深为log2x+1 (这里是log以2为底x的对数)(其中x表示不大于n的最大整数) 。
  • 性质5:若对一棵有n个节点的完全二叉树进行顺序编号(1≤i≤n),那么,对于编号为i(i≥1)的节点:
    当i=1时,该节点为根,它无双亲节点 。
    当i>1时,该节点的双亲节点的编号为i/2 。
    若2i≤n,则有编号为2i的左节点,否则没有左节点 。
    若2i+1≤n,则有编号为2i+1的右节点,否则没有右节点 。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BORN(^-^)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值