day_01_绪论、栈、队列

主要内容:
  1)数据结构
    栈、队列、链表、二叉树
  2)算法
    2种查找算法 + 4种排序算法
重点
  理解数据结构的特性及算法的思想。


一、数据结构

1、数据结构的概念和分类

1)基本概念

  a. 数据结构指数据在计算机中的存储和组织形式,也就是相互之间存在一种或者多种特定关系的数据的集合;

  b.数据结构选择会影响运行效率(时间复杂度)存储效率(空间复杂度);

2)基本分类

a. 逻辑结构:(逻辑关系)

集合结构、线性结构(前趋元素、后继元素)、树形结构(根元素 \ 起始元素、叶元素)、网状结构/图形结构

b. 物理结构:(位置关系)

顺序结构、链式结构(节点:数据、地址)

c. 运算结构:

描述数据结构的特性及实现方法;(创建、销毁、增删改查)

2、数组和链表比较

1)数组的特点

优点
  a. 支持下标访问,随机访问方便;
  b. 只需要存储数据元素本身的内存空间,相对来说比较节省内存空间;

缺点
  a. 需要预知元素的个数来确定内存空间的大小;
  b. 连续内存空间的要求导致小块的空间内存无法被使用,导致空间的利用率比较低;
  c. 插入/删除元素时,可能会导致大量元素的移动,因此执行效率相对比较低;

2)链表的特点

优点
  a. 不需要预知元素个数来确定存储空间的总大小,使用动态内存进行管理即可;
  b. 不需要连续的存储空间,因此内存空间的利用率相对比较高;
  c. 插入/删除元素时,只需要改变指针的指向即可,不需要移动元素本身,因此执行效率比较高;

缺点
  a. 不支持下标访问,实现随机访问也不方便;
  b. 除了存储数据元素本身的内存空间外,还需要额外的内存空间来表达数据元素之间的逻辑关系,因此相对来说比较浪费内存空间;


二、栈的基本概念和操作(Stack)

1、基本概念:

后进先出(LIFO:last in first out)

2、基本操作

  1. 创建(stack_create)
  2. 销毁(stack_destroy)
  3. 入栈(stack_push)
  4. 出栈(stack_pop)
  5. 判断栈是否为空(stack_empty)
  6. 判断栈是否为满(stack_full)
  7. 遍历栈中所有元素(stack_travel)
  8. 查看栈顶元素(stack_peek)
  9. 计算栈中有效元素的个数(stack_size)

练习:
  1)顺序结构实现栈的操作;
  2)链式结构实现栈的操作;
  3)实际应用(小鼠走迷宫等);


三、队列的基本概念和操作(Queue)

1、基本概念

a. 队列本质上就是一种具有先进先出特性的数据结构。(FIFO)
b. 队列是一种在两端进行增删操作的数据结构,其中插入元素的一端叫做队尾;删除元素的一端叫做队首/队头。
c. 队列属于逻辑结构中的线性结构,分别可以采用物理结构中的顺序结构和链式结构实现。

2、基本操作

  1. 创建(queue_create)
  2. 销毁(queue_destroy)
  3. 判断是否为空(queue_empty)
  4. 判断是否为满(queue_full)
  5. 入队(queue_push)
  6. 出队(queue_pop)
  7. 遍历队列中所有元素(queue_travel)
  8. 查看队首元素值(queue_front)
  9. 查看队尾元素值(queue_back)
  10. 计算队列中有效元素的个数(queue_size)
  11. 清空队列中所有元素(queue_clear)

练习:
  1)顺序结构实现队列的操作;
  2)链式结构实现队列的操作;

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值