SILK-097 ``` ### 5. 链表 **用处**: 线性存储结构,适合频繁插入/删除操作。 ### 5.1 链表 **用处**: 线性存储结构,适合频繁插入/删除操作。 ### 5.1.1 单链表 **用处**: 线性存储结构,适合频繁插入/删除操作。 ``` @step 1. 定义节点 struct Node { int data; Node* next; } @step 2. 创建节点 Node* final = new Node; final->data = 1; final->next = NULL; @step 3. 连接节点 Node* head = new Node; head->data = 0; head->next = final; @step 4. 访问节点 cout << head->next->data; ``` ### 5.1.2 双链表 **用处**: 线性存储结构,适合频繁插入/删除操作。 ``` @step 1. 定义节点 struct Node { int data; Node* next; Node* prev; } @step 1. 创建节点 Node* final = new Node; final->data = 1; final->next = NULL; final->prev = NULL; @step 2. 创建中间节点 Node* head = new Node; head->data = 0; head->next = final; head->prev = NULL; @step 3. 创建中间节点 Node* middle = new Node; middle->data = 0.5; middle->next = final; middle->prev = head; @step 4. 访问节点 cout << head->next->data; ``` ### 5.1.3 循环链表 **用处**: 线性存储, constant access/insertion, O(1) head/end access. ``` @step 1. 创建单向循环链表 Node* final = new Node; final->data = 1; final->next = final; @step 2. 创建中间节点 Node* middle = new Node; middle->data = 0.5; middle->next = final; @step 3. 创建head Node head = new Node; head->data = 0; head->next = middle; @step 4. 访问节点 cout << head->next->data; ``` ### 5.1.4 双向循环链表 **用处**: 线性存储, constant access/insertion, O(1) head/end access. ``` @step 1. 创建basic单向循环链表 Node* final = new Node; final->data = 1; final->next = final; final->prev = final; @step 2. 创建中间节点 Node* middle = new Node; middle->data = 0.5; middle->next = final; middle->prev = final; @step 3. 创建head Node head = new Node; head->data = 0; head->next = middle; head->prev = final; @step 4. 访问节点 cout << head->next->data; ``` ### 5.1.5 栈 **用处**: LIFO原则,实现递归操作,例如回溯/DFS/分治/分治。 ``` @step 1. 创建栈 stack<int> st; @step 2. 入栈 st.push(1); st.push(2); @step 3. 出栈 cout << st.top(); st.pop(); @step 4. 访问节点 cout << st.top(); ``` ### 5.1.6 队列 **用处**: FIFO原则,实现BFS操作。 ``` @step 1. 创建队列 queue<int> q; @step 2. 入队 q.push(1); q.push(2); @step 3. 出队 cout << q.front(); q.pop(); @step 4. 访问节点 cout << q.front(); ``` ### 5.1.7 优先级队列 **用处**: 线性存储,最适合基于优先级的调度。 ``` @step 1. 创建队列 priority_queue<int> pq; @step 2. 入队 pq.push(1); pq.push(2); @step 3. 出队 cout << pq.top(); pq.pop(); @step 4. 访问节点 cout << pq.top(); ``` ### 5.1.8 堆 **用处**: 基于优先级,擅长O(1) top/find-min.x O(complex) insert/remove. ``` @step 1. 创建堆 vector<int> v = {1,2,3}; make_heap(v.begin(), v.end()); w @ step 2. 入队 v.push_back(4); push_heap(v.begin(), v.end()); @step 3. 出队 cout << v[1]; pop_heap(v.begin(), v.end()); v.pop_back(); @step 4. 访问节点 cout << v[1]; ``` ### 5.2.1 跳表 **用处**: 用于在线游戏中跳过链表元素。 ``` @step 1. 创建堆 vector<int> v = {1,2,3}; make_heap(v.begin(), v.end()); w @ step 2. 入队 v.push_back(4); push_heap(v.begin(), v.end()); @step 3. 出队 cout << v[1]; pop_heap(v.begin(), v.end()); v.pop_back(); @step 4. 访问节点 cout << v[1]; ``` ### 5.2.2 树 **用处**: 具备某个共同特性子树,最适合实现文件目录和数据库表/列。 ``` @step 1. 创建树 class Node { int data; Node* left; Node* right; } @step 2. 创建根节点 Node* head = new Node; head->data = 0; head->left = NULL; head->right = NULL; @step 3. 创建节点 Node* left = new Node; left->data = 3; left->left = NULL; left->right = NULL; @step 4. 创建节点 Node* right = new Node; right->data = 5; right->left = NULL; right->right = NULL; @step 5. 连接节点 head->left = left; head->right = hright; @step 6. 访问节点 cout << head->left->data; ``` ### 5.2.3 二叉树 **用处**: 线性存储,在储存/display文件具有平衡的特性。 ``` @step 1. 创建树 class Node { int data; Node* left; Node* right; } @step 2. 创建根节点 Node* head = new Node; head->data = 0; head->left = NULL; head->right = NULL; @step 3. 创建节点 Node* left = new Node; left->data = 3; left->left = NULL; left->right = NULL; @step 4. 创建节点 Node* right = new Node; right->data = 5; right->left = NULL; right->right = NULL; @step 5. 连接节点 head->left = left; head->right = hright; @step 6. 访问节点 cout << head->left->data; ``` ### 5.2.4 平衡二叉树 **用处**: 线性存储,在储存/display文件具有平衡的特性。 ``` @step 1. 创建树 class Node { int data; Node* left; Node* right; } @step 2. 创建根节点 Node* head = new Node; head->data = 0; head->left = NULL; head->right = NULL; @step 3. 创建节点 Node* left = new Node; left->data = 3; left->left = NULL; left->right = NULL; @step 4. 创建节点 Node* right = new Node; right->data = 5; right->leftya!
動画発売日
収録時間
240 分とても長い
動画ランキング
386312 / 532154
他の動画 ID
1silk00097, SILK097, SILK 097
女優体型
平均身長, 曲線美, セクシー
無修正
無し
動画言語
日本語
字幕
サブリップ (SRT ファイル)
著作権 ©
DMM
舞台裏 (22画像)
料金
高解像度 (HD 720p) ¥2398
標準 (480p) ¥1848
ストリーミング (HD/4k) ¥1298
iOS (360p) ¥1848
アンドロイド (360p) ¥1848
字幕 (キャプション)
英語字幕
中国語字幕
日本語字幕
フランス語字幕