数据结构

来源:互联网 发布:linux 清理缓存 目录 编辑:程序博客网 时间:2024/06/07 21:01

节点与结点的区别
节点被认为是一个实体,有处理能力,比如说网络上的一台计算机; 结点则只是一个交叉点,像“结绳记事”,打个结,做个标记

数据结构

数据结构本身并不属于任何语言,而是大量数据的有效管理机制,是计算机存储以及组织数据的方式。如果把编程比喻作做菜,那么数据结构就好比食材,而算法就好比厨艺。

数据结构是为了实现大量数据的有效管理的机制。

数据的逻辑结构

指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关

1.集合:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
2.线性结构:数据结构中的元素存在一对一的相互关系;
(除了第一个和最后一个元素之外,其他的数据元素都是首尾相接的。)
3.树形结构:数据结构中的元素存在一对多的相互关系;
4.图形结构:数据结构中的元素存在多对多的相互关系。

数据的物理结构

物理结构又可以叫做存储结构。指数据的逻辑结构在计算机存储空间的存放形式。

线性表:一种数据结构。集合中必须存在唯一一个“第一元素”,存在唯一一个“最后元素”。除去最后一个元素以及第一个元素之外,均有唯一 一个后件以及唯一一个前件。
线性表有两种存储方式:1.顺序存储结构 2.链式存储结构

链接存储它不要求逻辑上相邻的结点在物理位置上亦相邻

常用结构

数组:把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的集合称为数组

链表:数据按照顺序排列的数据结构叫做链表。链表可以管理线性排列的数据。链表中的数据可以远距离存放,而且数据是在链表的箭头连接的节点中顺序管理的

:只能在某一端插入和删除的特殊线性表。先进入的数据被压入栈底,最后的数据在栈顶,如果你需要数据的时候需要从栈顶开始弹出数据,第一个放入的数据会在最后。
(放书,只能从上面一本一本放,也只能从上面开始取)

队列:一种特殊的线性表,他只允许在表的前端进行删除操作,而在表的后端进行插入操作,进行删除操作的端称为队头。队列是按照“先进先出”或“后进后出”的原则组织数据的。队列中没有元素时,称为空队列。
(排队,新来的人只能从后面开始排队,也是从队头离开。不允许出现插队的情况)

栈与队列的区别
栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行
队列也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进)

一维数组。。。数据物理上连续排列。。。根据数据无间隙的线性排列来管理数据的前后关系

链表。。。数据的长度无限制,物理上可以不连续

单向链表。。。跟数据存放的位置无关。数据的存放位置可以自由的移动。即使移动数据的存储位置,也能以正确的顺序管理数据。数据能够用链自由添加和删除元素。

单向链表:从一段开始可以遍历所有的数据。。。单向链表 = 数据 + 指向下一结点的指针。。。“指向下一结点的指针”叫做“后继指针”。

后继指针: 可以指出下一个元素的物理地址。。。末尾元素的后继指针要包含“没有其他节点信息的终止信息”。

头指针: “指出元素开头的头结点的指针”。。。从头指针可以知道头结点的地址。
单向链表从头指针指出的元素开始,到后继指针到达末尾元素位置。需要指出,当链表中一个结点都没有是,头指针需要给出“无头结点”的信息

双向链表:从前向后和从后向前两个方向都有链。
双向链表 = 数据 + 指向前一结点的指针 + 指向后一结点的指针。。。在单项链表头指针的基础上增加了尾指针(指向末尾结点的指针),同样在一个数据都没有的时候,尾指针要给出“无头结点”的信息

数组是根据变量来管理数据的个数,链表是“没有指向下一个数据的指针”,也就是当后继指针没有时打到链的尾部。

在需要查找第N个元素时,数组可以直接通过N下标查找,而链表则需要从头开始遍历,直到需要查找的N

0 0
原创粉丝点击