C++数据结构
- 链表节点 Node T, Node *
- Stack isEmpty() peek() push() pop() getSize()
- Queue enqueue() dequeuer() getSize()
- 迭代器,对指针进行包装,更加安全
- 二叉树节点 Node T Node* left Node *right
- 树的遍历:中序(升)先序(深度优先)后序 广度优先
- 中+先(后)后(先)
- BinaryTree size insert() inorder() preorder() postorder() getSize()
- Heap 是一棵完全二叉树(除最后一层外都是满的,最后一层不满时所有节点都位于最左边),且每个节点都大于等于其任何子节点。存在数组(知道大小)或者向量中。
- 左2i+1,右2i+2,父(i-1)/2
- Heap remove() add() getSize()
- 优先队列: enqueuer() dequeue()getSize()可用heap实现
- 时间复杂度:
- 二分搜索:O(logn) 选择排序:O(n2) 插入排序:O(n2) 汉诺塔算法:O(2n)
- 冒泡排序: O(n)(最好) O(n2)(最差) 归并排序: O(nlogn) 快速排序:O(nlogn)
- 堆排序:O(nlogn) 堆排序的空间复杂性优于归并排序 外排序:O(nlogn)
- <vector> <deque> <list> <set> <multiset> <map> <multimwp> <stack> <queue>
- priority_queue <queue> empty() size() = 大于小于等等 iterator
- typedef
- istream_iterator ostream_iterator <iterator>
- vector deque 用数组实现的 list用链表实现的
- multiset<int, greater<int>>set1(values, values +6); 降序排列
- stack queue priority_queue push() pop() top() size empty() 可选vector deque list 作为基础数据结构
- Stack<int, vector<int>> stack2;
- 数值算法<numeric> 其他算法<algorithm>
- copy() fill() fill_n() generate() generate_n() remove() remove_if() remove_copy() remevoe_copy_if() replace() replace_if() replace_copy() replace_copy_if() find() find_if() find_end() find_first_of() search()
search_n() adjacent_find()merge() inplace_merge() reserve() reserve_copy()
swap() iter_swap() swap_ranges() count() count_if()max_element() min_element() random_shuffle() for_each() transform() includes() set_union()
set_differences() set_initersection() set_symmetric_difference() accumulate() adjacent_difference() inner_product() partial_sum()