摘要:
单向链表只能从一个方向遍历链表,即只能查找结点的下一个结点(后继结点),而不能查找结点的上一个结点(前驱结点)。鉴于上述问题,引入了双向链表。由于双向循环链表包含双向链表的所有功能操作。因此,我们只讲述双向循环链表。 与单向链表不同,双向链表的结点构造如下图所示。即一个结点由三个部分组成,数据域DA 阅读全文
摘要:
需再次了解: package com.qdcz.breadth.demo; import java.util.ArrayList;import java.util.List; /** * * <p>Title: TwoforktreeAl</p> * <p>Description: * 二叉树定义: 阅读全文
摘要:
堆和栈的区别:copy到的 在bbs上,堆与栈的区分问题,似乎是一个永恒的话题,由此可见,初学者对此往往是混淆不清的,所以我决定拿他第一个开刀。 首先,我们举一个例子:void f() { int* p=new int[5]; }这条短短的一句话就包含了堆与栈,看到new,我们首先就应该想到,我们分 阅读全文
摘要:
队列(Queue)是限定只能在一端插入、另一端删除的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear),没有元素的队列称为“空队列”。 队列具有先进先出(FIFO)的特性。 普通顺序队列存在的问题 在普通顺序队列中,入队的操作就是先将尾指针rear右移一个单位,然后将元 阅读全文
摘要:
1:通过计算权值最小的连接线, 在边赋权图中,权值总和最小的生成树称为最小生成树。构造最小生成树有两种算法,分别是prim算法和kruskal算法。在边赋权图中,如下图所示: 在上述赋权图中,可以看到图的顶点编号和顶点之间邻接边的权值,若要以上图来构建最小生成树。结果应该如下所示: 这样构建的最小生 阅读全文
摘要:
通过将数组分为两组及以上,在分组进行排序,最后将排序好的分组进行整合,通过比较两数组的最大和最小值来进行比较,即数组1的最大元素和数组2最小元素进行比较,若不成立,则反过来进行对比,然后便逐一排序分组,(ps:自己理解) 归并排序(Merge)是将两个(或两个以上)有序表合并成一个新的有序表,即把待 阅读全文
摘要:
(ps:自己理解)通过下标循环从0到n的循环来除去下标为n的数, 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3...n分别表示)围坐在一张圆桌周围。从编号为k的人开始报数,数到m的那个人出列;他的下一个人又从1开始报数,数到m的那个人又出列;依此规律重复下去,直到圆桌周围的人全部出列。 阅读全文
摘要:
内容比较详细: http://www.cnblogs.com/junyuhuang/p/4127095.html, 代码如下: package com.qdcz.breadth.demo; /** * * <p>Title: HuffmanCode</p> * <p>Description:哈弗曼算 阅读全文
摘要:
堆排序:大堆排序就是将最大的数先进行排序,然后对剩下依次排序,自到堆里无未排序数据为止, 小堆排序,恰好相反, 用二叉树进行实现, 具体代码如下: 、 package com.qdcz.breadth.demo; /** * * <p>Title: HeapA</p> * <p>Descriptio 阅读全文
摘要:
深度优先搜索法:深度优先查找(depth-first search,DFS)可以从任意顶点开始访问图的顶点,然后把该顶点标记为已访问。在每次迭代的时候,该算法紧接着处理与当前顶点邻接的未访问顶点。这个过程一直持续,直到遇到一个终点——该顶点的所有邻接顶点都已被访问过。在该终点上,该算法沿着来路后退一 阅读全文
摘要:
1.广度优先搜索法:就是通过指定一个节点,向四周节点搜索,搜索到的新节点判断是否出界,再次判断是否已经被访问,如未被标记也未出界,就将对应数组中的数字就输出,(ps:自我简单的了解) 从队列头取出一个结点,检查它按照扩展规则是否能够扩展,如果能则产生一个新结点。 (2)检查新生成的结点,看它是否已在 阅读全文