小白学习之数据结构

数据结构绪论

数据——符号
数据元素——记录——人
数据项——数据的最小单位——手、姓名等

数据对象
是性质相同的数据元素的集合,是数据的子集。
在实际应用中,我们都将数据对象简称为数据。

数据结构——关系
数据结构:是相互之间存在一种或多种特定关系的数据元素的集合。

结构
按照视点的不同,我们把数据结构分为逻辑结构和物理结构。

逻辑结构:是指数据对象中数据元素之间的相互关系。

  1. 集合结构(平等——同属一个集合)
  2. 线性结构(一对一)
  3. 树形结构(一对多)
  4. 图形结构(多对多)

我们在用示意图表示数据的逻辑结构时,要注意两点:

  1. 将每一个数据元素看做一个结点,用圆圈表示。
  2. 元素之间的逻辑关系用结点之间的连线表示,如果这个关系是有方向的,那么用带箭头的连线表示。

可以看出,逻辑结构是针对具体问题的,是为了解决某个问题,在对问题理解的基础上,选择一个合适的数据结构表示数据元素之间的逻辑关系。

物理结构:是指数据的逻辑结构在计算机中的存储形式。

数据的存储结构应正确反映数据元素之间的逻辑关系,这才是最为关键的,如何存储数据元素之间的逻辑关系,是实现物理结构的重点和难点。

数据元素的存储结构形式有两种:

  1. 顺序存储——排队占位
  2. 链式存储

逻辑结构是面向问题的,而物理结构就是面向计算机的,其基本的目标就是将数据及其逻辑关系存储到计算机的内存中。

数据类型
数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

抽象数据类型(Abstract Data Type,ADT):是指一个数学模型及定义在该模型上的一组操作

描述抽象数据类型的标准格式:
在这里插入图片描述
小结:
在这里插入图片描述
在这里插入图片描述

算法

算法的定义:算法是解决特定问题求解步骤的描述,在计算机中为指令的有限序列,并且每条指令表示一个或多个操作。

算法的特性:有穷性、确定性、可行性、输入、输出。

算法的设计的要求:正确性、可读性、健壮性、高效率和低存储量需求。

算法复杂度

线性表

线性表(List):零个或多个数据元素的有限****序列

线性表的抽象数据类型
在这里插入图片描述在这里插入图片描述在这里插入图片描述

总结:

在这里插入图片描述

栈与列队

栈是限定仅在表尾(栈顶-top)进行插入和删除操作的线性表。

我们把允许插入和删除的一端称为栈顶(top),另一端称为栈底(bottom),不含任何数据元素的栈称为空栈。栈又称为后进先出(LastIn First Out)的线性表,简称LIFO结构。
在这里插入图片描述

队列是只允许在一端进行插入操作、而在另一端进行删除操作的线性表。

在这里插入图片描述

数据结构课程设计学习资料和方法如下: - **学习资料**:吉林大学计算机学院数据结构课程设计资源可提供全面学习资料,是学习好帮手,能为核心功能提供有力支持,辅助学习和理解数据结构课程内容[^1]。南京航空航天大学2020年度数据结构课程的课程设计资源文件也有帮助,该文件包含完整课程设计项目,有助于理解和掌握数据结构知识与实际应用,可下载解压到本地电脑进行查阅和学习,文件格式为7z压缩文件,名为“数据结构课程设计南航.7z”[^2]。还有适合不同阶段学习者的2024年大数据大作业(课程设计)资料,既有适合小白的零基础资料,也有适合3年以上经验者的进阶课程,涵盖95%以上大数据知识点,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频且会持续更新,可通过指定链接获取[^3]。此外,还有10个数据结构课程设计例子(C语言完整源码),例如包含二叉排序树、快速排序、冒泡排序、二叉树非递归遍历等内容,能为学习提供具体的代码示例和实现思路[^4]。 - **学习方法**:对于南京航空航天大学的课程设计资源文件,可下载并解压到本地电脑,根据课程要求查阅相关资料,理解并运行课程设计内容,按照教学指导完成指定的实验或项目任务[^2]。 ```python # 可参考的简单数据结构示例代码(以栈实现括号匹配为例) class Stack: def __init__(self): self.items = [] def is_empty(self): return len(self.items) == 0 def push(self, item): self.items.append(item) def pop(self): if self.is_empty(): return None return self.items.pop() def is_matching_pair(left, right): if left == '(' and right == ')': return True if left == '[' and right == ']': return True if left == '{' and right == '}': return True return False def is_balanced(expression): stack = Stack() for char in expression: if char in '([{': stack.push(char) elif char in ')]}': if stack.is_empty(): return False top = stack.pop() if not is_matching_pair(top, char): return False return stack.is_empty() expression = "{[()]}" print(is_balanced(expression)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值