数据结构与算法c++实现
我叫龙傲天
相信微末的力量
展开
-
数据结构与算法C++实现(10)之哈希表
一、概念散列技术是在记录的存储位置和他的关键字之间建立一个确定的对应关系f,是的每个关键字key对应一个存储位置f(key)。查找时,根据这个对应的关系找到给定值key的映射f(key),若查找集合中存在这个记录,则必定在f(key)的位置上。我们把这种对应关系f成为散列函数,又称为哈希(Hash)函数。采用散列技术将记录存储在一块连续的存储空间中,这块连续空间称为散列表或哈希表(Hash-...原创 2019-10-16 14:22:17 · 1038 阅读 · 2 评论 -
数据结构与算法C++实现(9)之双线链表
这个双向列表的首节点的数据其实是空的,这是为了让操作更加简单。代码:#ifndef _LIST_H#define _LIST_Htemplate<class T> class Node;//声明template<class T> class _iterator;template<class T>class List{public:...原创 2019-09-24 10:52:34 · 185 阅读 · 0 评论 -
数据结构与算法c++实现(8)之单向链表
这是一个单向链表,每次在链表的头部加入新节点。并且加入了迭代器。#ifndef _MYLIST_H#define _MYLIST_Htemplate<class T> class Node;//Node,Mylist两个类相互依赖,需要做一个声明template<class T> class MyList_Iterator;/****************...原创 2019-09-10 10:59:59 · 189 阅读 · 0 评论 -
数据结构与算法c++实现(7)之动态数组构成队列
这是一个环形的队列,为了逻辑简单,队首是一个空字节。代码:#ifndef _MYQUEUE_H#define _MYQUEUE_H#include <algorithm>template<class T>class MyQueue{public: MyQueue(int size = 10); MyQueue(const MyQueue&l...原创 2019-09-07 21:57:18 · 119 阅读 · 0 评论 -
数据结构与算法c++实现(6)之动态数组实现栈
对于栈的概念什么的,我就不在这里念叨啦,网上真正用C++来实现的还不多,这里我将我的源码贴出来,觉得自己写的还算可以,供大家参考。代码:#ifndef _MYTOOLS_H#define _MYTOOLS_H#include <iostream>#include <algorithm>/*********************************...原创 2019-09-06 20:53:17 · 267 阅读 · 0 评论 -
数据结构与算法c++实现(5)之KMP匹配算法
应用背景:我们都用过word中的查找功能,这个查找功能就是匹配算法的应用背景。在主串中找到子串,并返回子串在主串中的位置。暴力匹配:假设我们的主串是S= “goodgoogle”,子串T=“google”。要想在主串中找到子串最简单的做法如下:代码实现:#include<iostream>using namespace std;int B...原创 2019-08-09 16:18:37 · 372 阅读 · 0 评论 -
数据结构与算法c++实现(4)之二分查找
二分查找(折半查找)时间复杂度。这是一种很有效的查找方法,但是要求原始数组是有顺序的。#include<iostream>#include<algorithm> using namespace std;int binary_find(const int list[],const int& n,const int& val){ if(n &...原创 2019-07-31 16:34:01 · 254 阅读 · 0 评论 -
数据结构与算法c++实现(3)之选择排序
选择排序时间复杂度O(n*n),比冒泡排序的优点是,减少了多次的交换顺序。#include<iostream>using namespace std;void select_sort(int list[],int n){ int min; for(int i = 0; i < n-1; ++i){ min = i; for(int j = i+1;j...原创 2019-07-31 11:48:19 · 134 阅读 · 0 评论 -
数据结构与算法c++实现(2)之冒泡排序
冒泡排序时间复杂度O(n*n)#include<iostream>using namespace std;//void Bubble(int list[],int n){// for(int i = n-1; i > 0; --i){// for(int j = 0;j < i-1; ++j){// if(list[j] > list[j...原创 2019-07-31 10:46:28 · 163 阅读 · 0 评论 -
数据结构与算法(1)之快慢指针
何为快慢指针一般应用于数组、容器这样的数据结构的原地修改,注意是原地修改,快指针进行遍历,慢指针进行原地修改。例子给定一个排序数组,你需要在原地删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在原地修改输入数组并在使用 O(1) 额外空间的条件下完成。示例1:给定数组 nums = [1,1,2], 函数应该返回新的长度...原创 2019-07-20 11:00:20 · 199 阅读 · 0 评论