data structure
文章平均质量分 85
xuqing-ICT
纸上得来终觉浅,绝知此事要躬行。
展开
-
[data structure] heap 堆
定义:1 (二叉) 堆是一颗完全二叉树。2 任何一个节点都小于它的后裔节点。(最小堆),相应的,最大堆中的任何一个节点大于它的后裔节点。由于二叉堆是一个完全二叉树,因此对于二叉堆中的任何一个节点i,它的子节点的编号为:A[ left ] = A[ 2*i + 1 ] ; A[ right ] = A [ 2*i + 2 ] (注:这是与实原创 2014-02-02 14:50:53 · 1818 阅读 · 0 评论 -
数据结构 二叉查找树 BST
二叉查找树:又称为 二叉排序树 二叉搜索树首先,这几个名字都让我觉得混乱,简单地讲,二叉树的重要的应用便是查找了,因此“查找”与“搜索”二字等价,可以理解。那么又由于二叉搜索树的中序遍历是有序的,因此又叫做二叉排序树。接下来,步入正题:[摘自维基百科]二叉查找树(Binary Search Tree),也称有序二叉树(ordered binary tree),排序二叉树(s原创 2014-02-13 21:41:20 · 1607 阅读 · 0 评论 -
数据结构--循环双向链表
双向链表的节点定义如下:struct DuListNode{ int val; DuListNode *prev,*next; DuListNode(int x):val(x),prev(NULL),next(NULL){}};链表的最后一个节点的next指向头结点,头结点的prev指针指向链表的最后一个元素。实现代码如下:#include#include#includ原创 2014-03-02 20:20:08 · 1381 阅读 · 1 评论 -
最小生成树之Prim算法
Prim算法的思想是,首先从任意一个节点出发,逐渐生成,直至该树覆盖了所有的V中的节点。如下图:图中的黑色的边即是最小生成树中的边。实现Prim算法的关键便是,如何选择一条 “权值较小并且对于已有生成树中的点集合S来说是安全的边”,此处的安全指的是:加入该边e之后,S仍然是一个树。于是:对于图 G = (V, E) Prim的执行步骤大致为:1 从任意节点r原创 2014-07-28 10:59:25 · 1530 阅读 · 0 评论 -
数据结构 --- 单链表
在面对链表的题目时,大部分人(包括我自己)都是很怵的,因为这必将面临指针。笔者今天实现了一些关于链表操作的题目。自行实现了一下,过程很是艰辛。首先,定义单链表中的节点:struct ListNode{ int val; ListNode *next; ListNode(int x):val(x),next(NULL){}};//求链表长度原创 2014-05-11 12:23:29 · 1187 阅读 · 0 评论 -
算法 之 位图排序 bit-map sort
所谓的bit-map其实很简单,就是使用一个位来表示元素是否存在,原创 2014-02-01 21:55:11 · 1795 阅读 · 0 评论 -
数据结构 之 priority_queue 优先队列
C++中优先队列的实现是利用堆来实现的。在STL库中的make_heap , pop_heap以及push_heap来实现的。主要的操作有:1 push : push进一个元素,并调整堆2 pop : 弹出对首元素,并调整堆3 size : 返回队列中的元素个数4 empty : 队列是否为空5 top : 取出队首元素,但不删除该元素#include原创 2014-04-18 23:44:02 · 1669 阅读 · 0 评论 -
[数据结构]栈的插入,归并以及快速排序
栈的快速排序。原创 2014-09-01 21:47:05 · 1913 阅读 · 0 评论