数据结构大总结:
* 数据结构是数据元素之间一种或者多种特定关系的集合 数据--数据元素-数据项(表--学生信息-姓名)
* 数据存储结构分为:顺序存储结构[按照一定的顺序排列,并且物理地址相邻占据同一块内存空间] 链式存储结构[每一个数据都有两部分组成(数据+下一个元素的地址)]
* 线性表:顺序表:存储密度大,可以随机存取每一个元素 但是移动删除比较复杂,并且数据元素的内容不可以进行自由扩充(ArrayList在进行扩充时,首先申请增加原容量的一半,其次创建一个为原容量3/2的数组将其数组中的元素进行复制)
* 链式表:【链式存储结构结点在存储器中的位置是任意的,即使逻辑结构上相邻,物理上也不一定相邻】
* 单向链表:head---data+next
* 双向链表 :
* 双向循环链表
* 特殊的线性表:
* 栈:只可以在栈顶对元素进行出栈入栈操作 先进后出
* 队列:先进先出 ,其中在顺序队列中还会出现假溢出现象:(用front来表示队首元素的第一个位置,rear表示下一个元素的地址,当存入5个元素,经过一段时间出去了4个元素,此时front指向最后一个元素,rear已经指向数组外部,当再往里存入元素时会发生数组下标越界,但是事实上里面的存储位置都是空的,此时叫假溢出现象)
* 解决假溢出,就用循环顺序链表...顾名思义就是将数组在逻辑上看做一个环,当front == rear, 此时为空 front指向0号位置,而rear指向5号位置,此时为满队列(实际上有一个元素的位置是空的)
* 那么如何来判断是否空还是满呢?
* 1.定义一个标志符flag,默认值为0, 当入队成功flag = 1,出对成功flag = 0,所以当front==rear&&flag == 0 表示队列空,同理
* 2.使用一个计数器count(表示数组中元素的个数)count>0&& front== rear 为满
* 3.使用(rear+1)% maxSIze == front 为满
* 查找:顺序查找:对数组进行遍历,进行查找,找到则返回元素的索引,找不到则返回-1
* 折半查找(二分查找):前提必须是已经进行排序的 接下来取其中间值和目标值进行比较,若目>中,则咋其原数组后半部分进行比较....结束的时候是start>end
* 数据算法:
* 二叉树:
* 二叉搜索树
* ....
* 数据结构是数据元素之间一种或者多种特定关系的集合 数据--数据元素-数据项(表--学生信息-姓名)
* 数据逻辑结构分为
1.线性结构[队列 栈 串 数组] 非线性结构 (线性结构有且只有一个开始和终端结点,并且所有的结点有且只有一个前驱和后继)
* 2.集合(树 图) 线性结构 图形结构 树形结构* 数据存储结构分为:顺序存储结构[按照一定的顺序排列,并且物理地址相邻占据同一块内存空间] 链式存储结构[每一个数据都有两部分组成(数据+下一个元素的地址)]
* 线性表:顺序表:存储密度大,可以随机存取每一个元素 但是移动删除比较复杂,并且数据元素的内容不可以进行自由扩充(ArrayList在进行扩充时,首先申请增加原容量的一半,其次创建一个为原容量3/2的数组将其数组中的元素进行复制)
* 链式表:【链式存储结构结点在存储器中的位置是任意的,即使逻辑结构上相邻,物理上也不一定相邻】
* 单向链表:head---data+next
* 双向链表 :
* 双向循环链表
* 特殊的线性表:
* 栈:只可以在栈顶对元素进行出栈入栈操作 先进后出
* 队列:先进先出 ,其中在顺序队列中还会出现假溢出现象:(用front来表示队首元素的第一个位置,rear表示下一个元素的地址,当存入5个元素,经过一段时间出去了4个元素,此时front指向最后一个元素,rear已经指向数组外部,当再往里存入元素时会发生数组下标越界,但是事实上里面的存储位置都是空的,此时叫假溢出现象)
* 解决假溢出,就用循环顺序链表...顾名思义就是将数组在逻辑上看做一个环,当front == rear, 此时为空 front指向0号位置,而rear指向5号位置,此时为满队列(实际上有一个元素的位置是空的)
* 那么如何来判断是否空还是满呢?
* 1.定义一个标志符flag,默认值为0, 当入队成功flag = 1,出对成功flag = 0,所以当front==rear&&flag == 0 表示队列空,同理
* 2.使用一个计数器count(表示数组中元素的个数)count>0&& front== rear 为满
* 3.使用(rear+1)% maxSIze == front 为满
* 查找:顺序查找:对数组进行遍历,进行查找,找到则返回元素的索引,找不到则返回-1
* 折半查找(二分查找):前提必须是已经进行排序的 接下来取其中间值和目标值进行比较,若目>中,则咋其原数组后半部分进行比较....结束的时候是start>end
* 数据算法:
* 二叉树:
* 二叉搜索树
* ....