- 前言:因为先学习了C语言,所以一直以为数据结构就是C语言的一部分,后边才发现,数据结构的一小部分才是被C语言所用;所以我又重新学了数据结构,特写这篇笔记以防忘掉。
- 起源:起源于《计算机程序设计与艺术》中的《基本算法》;在计算机兴起后,软件、硬件在不断的发展,程序朝着如何简单如何简便的发展趋势去,但是一开始的时候,人们是先用算法写程序,等到发现数据越来越大、越来越多的时候,人们就想着能不能把数据归下类什么的,把数据处理给简化了,后边慢慢的就有了数据结构。
一.简介
- 早期被理解为数值计算根据
- 现在的定义是一门研究非数值计算的程序设计问题中的操作对象,以及他们之间的关系和操作等相关问题的学科。
-
数据
- 定义:描述客观事物的的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号的集合
- 包过int char 等,还包括视频、声音、图像、字符等非数值数据
-
基本概念:
- 数据元素(组成数据的,有一定意义的基本单位,在计算机中常作为整体处理)
- 数据项(若干个数据项组成一个数据元素)
3. 数据对象(定义:性质相同的数据元素的集合,数据的子集)
4. 数据结构=数据元素+数据关系
2.逻辑结构和物理结构
-
逻辑结构:集合结构、线性结构、树形结构、图形结构
-
物理结构(存储结构):顺序存储、链式存储
二.常见的数据结构
- 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
- 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
- 数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
- 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
- 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
- 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
- 堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。
三.常用操作
- 检索:检索就是在数据结构里查找满足一定条件的节点。一般是给定一个某字段的值,找具有该字段值的节点。
- 插入:往数据结构中增加新的节点。
- 删除:把指定的结点从数据结构中去掉。
- 更新:改变指定节点的一个或多个字段的值。
- 排序:把节点按某种指定的顺序重新排列。例如递增或递减。