常见的数据结构(顺序表、顺序表、链表、栈、队列、二叉树)

线性表(Linear List)

1.什么是线性表

2.线性表的特点

3.线性表的基本运算

顺序表

1.什么是顺序表

2.时间复杂度:

链表

1.什么是链表

2.单向链表

  1. 双向链表

4.ArrayList和LinkedList的使用

栈Stack

1.什么是栈

2.栈的基本方法

队列Queue

1.什么是队列

2.队列的特点

3.队列的基本方法

二叉树

1.什么是二叉树

2.特别二叉树

线性表(Linear List)

1.什么是线性表

零个或多个数据元素的有限序列。

2.线性表的特点

有且仅有一个开始结点,无直接前趋,有且只有一个直接后继

有且仅有一个结束结点,有且只有一个直接前趋,无直接后继。

内部结点都有且只有一个直接前趋和一个直接后继

3.线性表的基本运算

initList:初始化操作,建立一个空的线性表

listEmpty:若线性表为空,返回true,否则返回false

clearList:将线性表清空

getElem(index):将线性表中第index个位置的元素值返回

locateElem(value):在线性表中查找与value值相等的元素,查找成功则返回该元素在线性表中的索引,否则返回-1

listInsert(index,value):在线性表中第index个位置插入value

listDelete(index):删除线性表第index个位置元素,返回该值

listLength:返回线性表实际存储元素个数,即长度

getAll:遍历线性表

顺序表

1.什么是顺序表

顺序表是按照顺序存储方式存储的线性表,是一种特殊的线性表。

2.时间复杂度:

查询时间复杂度为O(1);

插入和删除为O(n)。

链表

1.什么是链表

链表是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。链表可分为单向链表和双向链表。

2.单向链表

一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接。

3. 双向链表

4.ArrayList和LinkedList的使用

以下情况使用 ArrayList :

频繁访问列表中的某一个元素。

只需要在列表末尾进行添加和删除元素操作。

以下情况使用 LinkedList :

需要通过循环迭代来访问列表中的某些元素。

需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。

栈Stack

1.什么是栈

栈是Vector的一个子类,它实现了一个标准的后进先出的栈。

入栈和出栈。

2.栈的基本方法

|---|-------------------------------------------------|
| 1 | boolean empty() 测试堆栈是否为空。 |
| 2 | Object peek( ) 查看堆栈顶部的对象,但不从堆栈中移除它。 |
| 3 | Object pop( ) 移除堆栈顶部的对象,并作为此函数的值返回该对象。 |
| 4 | Object push(Object element) 把项压入堆栈顶部。 |
| 5 | int search(Object element) 返回对象在堆栈中的位置,以 1 为基数。 |

队列Queue

1.什么是队列

队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

2.队列的特点

1.只能在队首进行删除操作,在队尾进行插入操作

2.先进先出,后进后出。

3.队列的基本方法

|--------|-----------|----------|
| 插入 | add(e) | offer(e) |
| 删除 | remove() | poll() |
| 查看 | element() | peek() |

二叉树

1.什么是二叉树

二叉树就是一个根节点最多有左右两个孩子结点。

2.特别二叉树

满二叉树:顾名思义,就是所有结点都是满的,有左有右。

完全二叉树:完全二叉树是由满二叉树而引出来的,若一棵二叉树至多只有最下面两层的结点的度数可以小于2,并且最下层的结点都集中在该层最左边的若干位置上,则此二叉树为完全二叉树。

相关推荐
南宫生33 分钟前
贪心算法习题其三【力扣】【算法学习day.20】
java·数据结构·学习·算法·leetcode·贪心算法
weixin_432702261 小时前
代码随想录算法训练营第五十五天|图论理论基础
数据结构·python·算法·深度优先·图论
passer__jw7672 小时前
【LeetCode】【算法】283. 移动零
数据结构·算法·leetcode
爱吃生蚝的于勒3 小时前
深入学习指针(5)!!!!!!!!!!!!!!!
c语言·开发语言·数据结构·学习·计算机网络·算法
羊小猪~~3 小时前
数据结构C语言描述2(图文结合)--有头单链表,无头单链表(两种方法),链表反转、有序链表构建、排序等操作,考研可看
c语言·数据结构·c++·考研·算法·链表·visual studio
脉牛杂德4 小时前
多项式加法——C语言
数据结构·c++·算法
一直学习永不止步4 小时前
LeetCode题练习与总结:赎金信--383
java·数据结构·算法·leetcode·字符串·哈希表·计数
wheeldown12 小时前
【数据结构】选择排序
数据结构·算法·排序算法
躺不平的理查德16 小时前
数据结构-链表【chapter1】【c语言版】
c语言·开发语言·数据结构·链表·visual studio
阿洵Rain16 小时前
【C++】哈希
数据结构·c++·算法·list·哈希算法