![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构和算法
li_unit
这个作者很懒,什么都没留下…
展开
-
分治算法--最大子数组
#include #include #define Min -999999struct node{ int low; int high; int sum;};struct node FIND_MAX_CROSSING_SUBARRAY(int f[],int low,int mid,int high);struct node FIND_MAX_SUBARRAY(原创 2016-02-06 15:09:46 · 306 阅读 · 0 评论 -
数据结构和算法--堆
数据结构和算法是一种思想,理解了思想就是忘记了代码也能找回原来的记忆。栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。堆(操作系统):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS(操作系统)回收,分配方式倒是类似于链表。堆(数据结构):堆可以被看成是一棵树,如:堆排序。栈(数据结构):一种先进后出的数...原创 2019-08-25 21:12:44 · 252 阅读 · 1 评论 -
数据结构和算法--散列表
数据结构和算法是一种思想,理解了思想就是忘记了代码也能找回原来的记忆。散列表,又叫哈希表以每个对象ki的关键字为自变量,用一个函数h(ki)来映射出ki的内存地址,也就是ki的下标,将ki对象的元素内容全部存入这个地址中就行了。这个就是Hash的基本思路。解决哈希冲突的方法1.链地址法:基本思想是将具有同一散列地址的记录存储在一条线性链表中。例如除留余数,34、56、2...原创 2019-08-25 21:09:51 · 163 阅读 · 0 评论 -
数据结构和算法--树
数据结构和算法是一种思想,理解了思想就是忘记了代码也能找回原来的记忆。二叉搜索树:二叉树,每个结点只存储一个关键字,等于则命中,小于走左结点,大于走右结点。AVL树:每个节点的左子树和右子树的高度最多差1的二叉搜索树。B(B-) 树:多路搜索树,根节点至少有两个子节点,每个节点有M-1个key,并且以升序排列,位于M-1和M key的子...原创 2019-08-25 21:08:31 · 89 阅读 · 0 评论 -
A*寻路算法 lua
function InitMap() self.AMap = {} for i = 1,10 do self.AMap[i] = {} for j = 1,10 do local map = {} map.x = i map.y = j map.g = 999 map.h = 0 map.f = 0 map.node = {x=0,y=0}...原创 2018-11-08 15:17:19 · 463 阅读 · 0 评论 -
单链表的链表拆分
1.定义三的指针变量*p、*q、*t,p指向原链表的头结点head1,新建另一个头结点head2,q指向head2,t指向head1的next结点,两个头结点的next都设为空。2.按照条件分配t指向的结点,如果将这个结点连接到head1的链表中,(1)让p的next指向t(2)p和t都向后移,既p指向p的next,t指向t的next。(3)再让p的next为空。//链表拆分#inclu原创 2016-08-05 15:36:29 · 3288 阅读 · 0 评论 -
单链表删除重复链表
1.定义三个指针变量*p,*q,*t,p先指向第一个要扫描的结点.2.判断链表中是否存在和p一样的结点,让q指向p,判断q的next结点是否和p相同,如果相同(1)让t指向这个结点.(2)让q的next指向t的next.(3)销毁t所指向的结点3.如果q的next结点不于p结点相同,则让q向后移动,既q=q->next;4.判断完当前p结点后,让p结点后移。#include #i原创 2016-08-05 16:07:24 · 255 阅读 · 0 评论 -
链表合并
1.建立三个链表2.定义三个链表指针*t、*p、*q3.*p、*q分别指向两个链表的next结点;*t指向一个链表的头结点,这个头结点就成为新链表的头结点4.选择下一个结点,根据一定的判定条件,如果下一个结点为p的结点,(1)先让t指向p,(2)t向后移动既t=t->next,(3)p的指向后移既p=p->next。5.判断是否有一个链表合并完,如果q,p有一个为空即为有一个链表合原创 2016-08-04 20:31:45 · 525 阅读 · 0 评论 -
链表逆置
1.声明两个指针*q,*p,p指向头结点的next,q指向p的next,让头结点的next为空,链表逆置相当于建立一个新的链表,只是需要将所需的结点在另一个链表中得到。2.让链表的头结点的next为空,是让它继续当新链表的头结点。3.新链表的链接和逆序建链表类似,都是让结点直接插入到头结点的后边。4.所需结点的得到,使用p和q在原来的链表中依次得到,p永远指向将要链接的结点,q指向p结原创 2016-08-05 13:50:27 · 444 阅读 · 0 评论 -
双向循环链表的建立
双向循环链表与单向循环链表的差别在于,双向循环链表有两个指针,一个是指向下一个结点,一个是指向上一个结点。//双向链表#include #include using namespace std;//双向循环链表struct node{ int x; struct node *next; struct node *parent;}*head,*f;void原创 2016-08-08 19:03:07 · 722 阅读 · 0 评论 -
逆序建链表
1.建立一个新的结点 2.让这个结点的next指向头结点的next 3.让头结点的next指向该结点#include #includeusing namespace std;struct node{ int x; struct node *next;};//逆序建表struct node* creatListNi(int lenth){ struct原创 2016-08-04 20:29:39 · 220 阅读 · 0 评论 -
顺序建链表
#include #includeusing namespace std;struct node{ int x; struct node *next;};//顺序建表struct node *creatListShun(int lenth){ struct node *head,*t,*p; int i; head=(struct node原创 2016-07-31 20:37:02 · 248 阅读 · 0 评论 -
约瑟夫环的链表实现
当约瑟夫环用链表实现时,约瑟夫环充分的使用了单链表的查询和删除,约瑟夫环就是一个循环链表,在一段距离内删除一个结点,直到全部删除为止。//约瑟夫环#include #include using namespace std;struct node{ int x; struct node *next;}*head;void creat(int n){ str原创 2016-08-08 19:22:56 · 960 阅读 · 0 评论 -
归并排序--分治法
分治算法是将原问题分解成几个规模较小的类似问题,递归的求解这些子问题,然后再合并这些子问题的解来建立原问题的解。插入排序分治法就是将一个数组分解成许多的小数组,利用递归将每一个小数组用插入排序排好序列,在合并的时候是比较两个数组的最小值(递增排序),将小的数放到上一级数组中,依次进行,最后序列将排好。例如:递增排序一个长度为n整形数组#include #include #def原创 2016-02-03 14:09:32 · 349 阅读 · 0 评论 -
插入排序
插入排序适合少量元素排序,是一个有效的算法,它是在数组中寻找一个合适的位置再将数值插入进去。例如递增排序长度为n的数组。#include #include int main(){ int n; printf("输入有几个数\n"); scanf("%d",&n); int f[100]; int i; for(i=0;i<n;i++原创 2016-02-03 14:24:06 · 170 阅读 · 0 评论 -
堆排序
#include #include int Parent(int i);int Left(int i);int Right(int i);void Max_Heapify(int f[],int i);void Creat_Heap(int f[],int n);void HeapSort(int f[],int n);int f_size;int Parent(int i)//原创 2016-03-01 19:46:45 · 195 阅读 · 0 评论 -
数据结构和算法--排序算法
数据结构和算法是一种思想,理解了思想就是忘记了代码也能找回原来的记忆。插入排序:将N插入到已经排好序的数组中,时间复杂度为O(N^2)。例如将3和6插入到{1、2、4}中,数组的变化依次为{1、2、3、4}和{1、2、3、4、6}。希尔排序:希尔排序(Shell Sort)也是插入排序的一种。也称为缩小增量排序,是直接插入排序算法的一种更高效的改进版本。希尔排序是非稳定排序...原创 2019-08-31 13:11:21 · 203 阅读 · 0 评论