![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
数据结构与算法C++
李嘉图Y
凡是过往,皆为序章
展开
-
数据结构与算法_红黑树(二)
完善Insert函数,让它支持自动平衡 新插入的节点一定是红色的 当新插入的节点是外部孙子节点使,进行一次单旋转 当新插入的节点是内部孙子节点,进行一次双旋转 通用的旋转函数 Except.h异常类 #pragma once #include <string> using namespace std; class DSException { public: DSExce...原创 2020-02-18 17:38:17 · 438 阅读 · 0 评论 -
数据结构与算法_红黑树(一)
红黑树的设计: 红黑树的单旋转: 单旋转实验: int main() { const int NEG_INF = -99999; RedBlackTree<int> t(NEG_INF); t.Insert(30); t.Insert(15); t.Insert(70); t.Insert(20); cout << t.header->r...原创 2020-02-17 21:26:12 · 395 阅读 · 0 评论 -
数据结构与算法_哈希和映射
大O表示法来表示算法的速度 LinearMap.h线性映射 #pragma once #include <vector> using namespace std; template<class Key, class Value> class LinearMap //线性映射----做对比用,无实际意义 { public: LinearMap(int siz...原创 2020-02-15 20:49:08 · 495 阅读 · 0 评论 -
数据结构与算法_堆排序
MaxHeap.h #pragma once #include <iostream> //using namespace std; template<class T> class MaxHeap { public: MaxHeap(int mx=10); ~MaxHeap(); bool IsEmpty(); void Push(const T&);...原创 2020-02-14 17:49:41 · 426 阅读 · 0 评论 -
数据结构与算法_堆
满二叉树中如果子节点的位置是n(位置从0开始),那么他的父节点的位置是(n-1)/2 MaxHeap.h #pragma once #include <iostream> //using namespace std; template<class T> class MaxHeap { public: MaxHeap(int mx=10); ~MaxHeap(); ...原创 2020-02-14 15:33:07 · 448 阅读 · 0 评论 -
数据结构与算法_二叉查找树
BinarySearchTree.h #pragma once #include <iostream> using namespace std; template<class T> class BST; //前置声明 enum boolean { FALSE, TRUE, }; template<class T> class Element { pub...原创 2020-02-12 20:56:29 · 431 阅读 · 1 评论 -
数据结构与算法_二叉树
BinaryTree.h #pragma once #include <iostream> #include "queue" using namespace std; template<class T> class BinaryTree; //前置声明 template<class T> class TreeNode { friend class Bina...原创 2020-02-12 17:12:56 · 409 阅读 · 0 评论 -
数据结构与算法_基数排序
main.h #include <iostream> #include "list" using namespace std; //计算最大的数是几位数 int maxdigit(int data[], int num) { int d = 1; int p = 10; for(int i = 0; i < num; i++) { while(data[i] &g...原创 2020-02-11 17:42:54 · 396 阅读 · 0 评论 -
数据结构与算法_链式队列
LinkQueue.h #pragma once #include "LinkQueue.h" using namespace std; template<class T> class LinkQueue { public: LinkQueue(); ~LinkQueue(); bool IsEmpty() const; const T& GetFront() co...原创 2020-02-11 13:50:13 · 433 阅读 · 0 评论 -
数据结构与算法_链式栈
LinkStack.h #pragma once #include <iostream> using namespace std; template<class T> class LinkStack; //前置声明 template<class T> class ListNode { friend class LinkStack<T>; pri...原创 2020-02-11 13:48:19 · 440 阅读 · 0 评论 -
数据结构与算法_双向链表
main.h #include <iostream> using namespace std; class DbList; //前置声明 class DblListNode { friend class DblList; public: int data; DblListNode *left, *right; } ; class DblList { public: DblL...原创 2020-02-11 13:45:07 · 410 阅读 · 0 评论 -
数据结构与算法_循环链表
List,h #pragma once #include <iostream> using namespace std; template<class Type> class List; //前置声明list类 template<class Type> class ListIterator; //前置声明迭代器类 template<class ...原创 2020-02-09 20:37:38 · 416 阅读 · 0 评论 -
数据结构与算法_链表
List.h #pragma once #include <iostream> using namespace std; template<class Type> class List; //前置声明list类 template<class Type> class ListIterator; //前置声明迭代器类 template<class ...原创 2020-02-09 19:52:15 · 381 阅读 · 0 评论 -
数据结构与算法_顺序队列
queue.h #ifndef _QUEUL_H #define _QUEUE_H #include<iostream> using namespace std; template<class T> class Queue { public: Queue(int queueCapacity = 10); ~Queue(); bool IsEmpty() const;...原创 2020-02-08 21:09:17 · 431 阅读 · 0 评论 -
数据结构与算法_顺序栈
MyStack,h: #ifndef _MYSTACK_H #define _MYSTACK_H #include <iostream> #include "MyUtil.h" using namespace std; template<class T> class MyStack { public: MyStack(int stackCapacity = 10); ...原创 2020-02-07 20:13:39 · 405 阅读 · 0 评论 -
数据结构与算法_递归
#include<iostream> using namespace std; void doA() { cout << "hello" << endl; doA(); } void story() { cout << "从前有座山,山上有座庙,庙里有个小和尚,老和尚在给小和尚讲故事" << endl; story() ; ...原创 2020-02-07 12:59:01 · 490 阅读 · 0 评论 -
数据结构与算法_二分查找
#include<iostream> using namespace std; int BinarySearch(int *array, int len, int k) { int low = 0, high = len - 1, mid = 0; while(low <= high) { mid = (low + high)/2; if(array[mid]...原创 2020-02-06 15:45:19 · 421 阅读 · 0 评论 -
数据结构与算法_顺序查找
#include<iostream> using namespace std; int SequentialSearch(int *array, const int n, const int k) { for(int i = 0; i < n; i++) { if(array[i] == k) return i; } return -1; } ...原创 2020-02-06 15:18:10 · 471 阅读 · 0 评论 -
数据结构与算法_归并排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; void Merge(vector<...原创 2020-02-05 19:09:50 · 396 阅读 · 0 评论 -
数据结构与算法_希尔排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; vector<int> Sh...原创 2020-02-05 19:08:19 · 381 阅读 · 0 评论 -
数据结构与算法_快速排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; int partition(vecto...原创 2020-02-05 19:07:13 · 391 阅读 · 0 评论 -
数据结构与算法_选择排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; vector<int> Se...原创 2020-02-03 20:25:07 · 383 阅读 · 0 评论 -
数据结构与算法_插入排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; vector<int> In...原创 2020-02-03 20:10:25 · 387 阅读 · 0 评论 -
数据结构与算法_冒泡排序
#include<iostream> #include<string> #include "string" #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; vector<int> Bu...原创 2020-02-03 19:24:14 · 378 阅读 · 0 评论 -
13、用数组的元素排成最小的数
题目 输入一个正整数数组,把数组里所有数字拼接起来排成一个数,打印能拼接出的所有数字中最小的一个。例如输入数组{3,32,321},则打印出这三个数字能排成的最小数字为321323。 思路 遇到这个题,全排列当然可以做,但是时间复杂度为O(n!)。在这里我们自己定义一个规则,对拼接后的字符串进行比较。 排序规则如下: 若ab > ba 则 a 大于 b, 若ab < ba 则 a 小于...原创 2020-02-01 19:45:51 · 490 阅读 · 0 评论 -
12、连续子数组的最大和
题目 HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他忽悠住?(子向量的长度至少...原创 2020-02-01 15:25:01 · 412 阅读 · 0 评论 -
11、数组中出现次数大于一半的数
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //题目 /* 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数...原创 2020-02-01 14:42:00 · 537 阅读 · 0 评论 -
10、调整数组顺序使奇数位于偶数前面
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; void reOrderArray(vector<int> &a...原创 2020-02-01 14:41:03 · 415 阅读 · 0 评论 -
9、旋转数组的最小值
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //顺序寻找最小值 int MinInOrder(vector<in...原创 2020-01-31 20:11:50 · 387 阅读 · 0 评论 -
8、二维数组中的查找
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; bool Find(int target, vector<vect...原创 2020-01-31 20:10:27 · 377 阅读 · 0 评论 -
7、链表中环的入口节点
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //使用快慢指针,找到环中任意一个节点 ListNode* MeetingN...原创 2020-01-31 20:09:20 · 400 阅读 · 0 评论 -
6、删除链表中的重复节点
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //链表结点 typedef struct _ListNode{ int ...原创 2020-01-30 19:59:29 · 466 阅读 · 0 评论 -
5、两个链表的第一个公共节点
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //链表结点 typedef struct _ListNode{ int ...原创 2020-01-30 19:56:41 · 390 阅读 · 0 评论 -
4、合并两个有序链表
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //链表结点 typedef struct _ListNode{ int ...原创 2020-01-30 10:00:32 · 370 阅读 · 0 评论 -
3、反转链表
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //链表结点 typedef struct _ListNode{ int ...原创 2020-01-30 09:59:15 · 409 阅读 · 0 评论 -
2、输出链表倒数第K个元素值
#include<iostream> #include<string> #include<stdlib.h> using namespace std; //链表结点 typedef struct _ListNode{ int data; struct _ListNode* next; }ListNode; ListNode* LinkList_Cr...原创 2020-01-30 09:57:38 · 501 阅读 · 0 评论 -
1、从尾到头打印链表
#include<iostream> #include<string> #include<vector> #include<stack> #include<stdlib.h> #include"algorithm" using namespace std; //链表结点 typedef struct _ListNode{ int ...原创 2020-01-30 09:54:59 · 376 阅读 · 0 评论