数据结构可视化:
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
https://visualgo.net/en
Python可视化
https://pythontutor.com/
程序, 等于数据结构与算法. 在本标签下, 会讲述有关于数据结构 (逻辑结构, 存储结构和运算) 的基本知识. 逻辑结构分为线性结构 (线性表) 和非线性结构 (树, 与图) 的讲述. 存储结构包括 (顺序存储, 链式存储, 索引存储与散列存储) . 而有关于处理这些数据的基本技术即运算则 (如查找于排序) 在算法标签下讲述.
1. 线性表
线性表是指由有限个同类元素组成的, 且相邻元素之间有序偶关系.
2. 线性表的存储
线性表的存储有顺序存储和链表存储两种方式.
顺序存储按顺序依次存储, 列表和元组可以实现顺序表.
链表存储除了原有的数据外, 还有存放后继元素地址的指针域.
顺序表的操作会引起大量数据移动, 效率很低, 根本原因是数据的逻辑关系是通过物理关系来表示的; 链式存储不要求物理上相邻 (毕竟指针也不是吃干饭的) , 这就使链表相比顺序表效率更高.
3. 线性表的操作
1) 顺序表操作
参阅列表与元组的操作即可.
3. 单链表操作
点击显/隐线性表的操作
1 | class Node: |
2. 栈
栈是一种增删操作都在表尾 (称栈顶) 操作的线性表. 具有先进后出的特性.
点击显/隐栈的操作
1 | class Stack(object): |
3. 队列
队列经典例子是 “排队” , 但刚好与其相反. 队列的插入采用头插法, 删除采用尾删法.
点击显/隐队列的操作
1 | class Queue: |
4. 字符串
字符串是由 n 多字符组成的有限序列.
点击显/隐字符串的操作
1 | class String: |
5. 综合案例
- 模式匹配
给定一个子串, 要求在字符串中找到与子串相同的所有子串, 如在 “BBC ABCDAB ABCDABCDABDE” 中找到 “ABCDABD” .
a. 点击显/隐 BF 算法的代码
1 | # BF (Brute Force) 算法, |
b. 点击显/隐 KMP 算法的代码 [未完成]
1 | def get_next(String): |
- 小猫钓鱼.
甲和乙在玩一个扑克游戏——小猫钓鱼。游戏规则:将一副扑克牌平均分成两份,每人拿一分。甲先拿出手中第一张扑克牌放在桌上,然后乙也拿出手中第一张扑克牌,并放在甲刚才打出的扑克牌的上面,两人交替出牌。出牌时,如果某人打出的牌与桌上某张牌的牌面相同,可将两张相同的牌及其中间所夹的牌全部拿走,并依次放到自己手中牌的末尾。当任意一人手中当牌出完时,游戏结束,对方获胜。
点击显/隐小猫钓鱼的代码
1 | q1 = [1, 2, 3] # 小猫钓鱼主程序,初始化,以各自三张牌为例分牌:甲方(q1)牌为1,2,3 乙方(q2)牌为2,5,1 |
评论区
欢迎你留下宝贵的意见,昵称输入QQ号会显示QQ头像哦~