目录
前言
记录我学习数据结构时候的笔记
一、JSON
Json 是存储和交换文本信息的语法,是一种数据格式,类似 XML。
Json 比 XML 更小、更快、更易解析。
Json (JavaScript Objct Notation) 是一种轻量级的数据交换格式。基于 ECMAScript 的一个子集。
特点
1、轻量级的文本数据交换格式。
2、独立于语言。
3、具有自我描述性,更易理解。
书写格式
" 键 : 值 "
名称/值对 如:"fistName:john "
值可以是 数字、字符串、逻辑符、数组、对象、null 、bool 类型
二、线性表
是最简单,最基本,最常用的数据结构。线性表是在线性结构的抽象,线性接口的特点就是数据在表中一对一存储。
实现方式:顺序表、单链表(双向链表,循环链表)。
顺序表
是用地址连续的存储单元顺序存储线性表中的各个数据元素。
优点:在查找任何一个位置上的数据元素非常方便。
缺点:在对顺序表进行插入和删除的时候,需要通过移动数据元素来实现,影响了运行效率。
单链表
不要求在存储的物理路径上的位置相邻。
优点:由于是不需要物理位置的相邻,所以在插入和删除时,不需要对数据进行移动。
缺点:同时失去顺序表的优点,就是查找元素的没有那么方便,也失去可随机存储的优点。
三、栈和队列
栈和队列也是线性结构,线性表、栈和队列这三种数据元素以继数据元素间的逻辑完全相同,差别是线性表的操作不受限制。
但是栈和队列的操作受到限制,
栈 的操作只能在一端进行
队列 的插入操作在表的一端进行,而其他操作在另外一端进行。
所以我们将栈和队列称之为受限制的线性表。
栈(顺序栈、链栈)
操作在限定在表的尾端进行的线性表,标为由于要进行插入、删除等操作... 具有特殊含义,所以我们把表尾称之为栈顶。
他的另一端是固定的,叫栈底。
当栈中没有数据元素的时候,我们叫做空栈。
顺序栈
用一片连续的存储空间来存储栈中的数据元素。使用一维数组来存放顺序栈中的数据元素,栈顶指示器 top 设在数组下标为 0 端。
链站表
栈另外一种存储是链式存储,这样的栈称之为链栈。
存储原理:将新来的数据指向栈顶,让头节点指向新来的数据。让新来的节点成为头节点。
队列(顺序队列,链式队列)
队列是指插入操作限定在表的尾部而其他操作限定在表的头部进行线性表,把进行插入操作的表尾称为队尾(Rear),把进行其他操作的头部称之为对头(Front)。在队列中没有数据元素时称之为空队列。
顺序队列
使用一片连续的存储空间来存储队列中的数据,这样的队列称之为顺序队列。
链队列
链队列也是只在一端进行,为了操作方便,把对头设在链表的头部,并且不需要头节点。
只需要在队首和队尾操作,中间不能删除和插入,以此到达简化效果。
四、回文
回文是指一个 字符序列 以 中间字符 为基准两边字符完全相同。 如:ACBD E DBCA .
判断回文的思想
判断一个字符串序列是否有回文,就是把第一个字符与最后一个字符相比较,第二个字符和倒数第二个字符比较。就是 第 i 个字符与第 i-1 字符比较。
设计构思
将数据存储到两个不同的数据类型中。存到 栈 和 队列 如:1235321
队列:存储数据的时候是顺序依次存储的。
[0] 1,[1] 2,[2] 3,[3] 5,[4] 3,[5] 2,[6] 1 . 取数据的时候 从头下标 [0] [1] [2] ... 开始取
栈:由于先放的数据在栈底,取数据的时候从头开始取。
[0] 1,[1] 2,[2] 3,[3] 5,[4] 3,[5] 2,[6] 1 . 取数据的时候 从尾下标 [6] [5] [4] ... 开始取
总结
数据结构分类
集合:数据只是存储在同一个"集合"中,其中数据没有任何关系。
线性结构:有着先后顺序,元素中一对一的关系。
树形结构:以一点为根,随其发散。
图壮结构:数据与数据之间关系复杂。
什么是算法呢?
算法可以理解为,有基本运算及规定的运算顺序所构成的完整解题步骤。或者按照要求设计好的有限的确切的计算序列。
算法和数据结构之间的关系?
数据结构可以认为是数据在程序中的存储结构,和基本数据操作。
算法可以是认为解决问题的,算法设计与数据结构的。
数据结构是问题的核心,是算法的基础。
本文记录学习时JSON,线性表,栈和队列,回文以及数据结构的简单介绍。