代码改变世界

随笔分类 -  数据结构与算法(原创)

字典树(Trie tree)

2012-04-24 21:48 by Rollen Holt, 14122 阅读, 收藏, 编辑
摘要: Trie,又称单词查找树或键树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:最大限度地减少无谓的字符串比较,查询效率比哈希表高。性质它有3个基本性质:根节点不包含字符,除根节点外每一个节点都只包含一个字符。从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符都不相同。[编辑]图示这是一个Trie结构的例子: 在这个Trie结构中,保存了A、to、tea、ted、ten、i、in、inn这8个字符串,仅占用8个字节(不包括指针占用的空间)。实例这是一 阅读全文

堆排序

2012-04-15 14:20 by Rollen Holt, 990 阅读, 收藏, 编辑
摘要: 下一页 堆排序 1、 堆排序定义 n个关键字序列Kl,K2,…,Kn称为堆,当且仅当该序列满足如下性质(简称为堆性质): (1) ki≤K2i且ki≤K2i+1 或(2)Ki≥K2i且ki≥K2i+1(1≤i≤ ) 若将此序列所存储的向量R[1..n]看做是一棵完全二叉树的存储结构,则堆实质上是满足如下性质的完全二叉树:树中任一非叶结点的关键字... 阅读全文

常用数据结构算法 c++模板实现

2012-04-09 15:58 by Rollen Holt, 5215 阅读, 收藏, 编辑
摘要: 由于大三下学期了,快要找工作了,所以最近在复习一些学过的内容,以下是这几天写的数据结构里面的一些常用的算法,仅供参考。不过在平时做项目的时候,建议采用STL和Boost里面现成的东西,而不要自己去实现他们。另外,由于国内外讲解数据结构和算法的书籍很多,内容大多重复,所以笔者并没有自习讲解数据结构的原理,因为代码很简单,相信大家都可以看懂的。如果读者对于这一块比较生疏,本人推荐看看《算法导论》这本书,可能这本书不适合你作为入门的第一本书籍,但是这本书确实不错,可以作为你入门后经常翻阅的书、。顺序表单链表双向链表循环链表顺序栈链式栈顺序队列链式队列优先级队列串堆二叉树线索二叉树哈夫曼树树B+树图排 阅读全文

排序

2012-04-09 15:46 by Rollen Holt, 1083 阅读, 收藏, 编辑
摘要: Data.htemplate<typename Type> class Element{public: Type GetKey(){ return key; } void SetKey(Type item){ key = item; }public: Element<Type>& operator =(Element<Type> copy){ key = copy.key; return *this; } bool operator ==(Element<Type> item){ ... 阅读全文

2012-04-09 15:44 by Rollen Holt, 933 阅读, 收藏, 编辑
摘要: MinHeap.h template<typename Type> class MinHeap{public: MinHeap(Type heap[],int n); //initialize heap by a array ~MinHeap(){ delete[] m_pheap; }public: bool Insert(const Type item); bool D... 阅读全文

B+树

2012-04-08 23:23 by Rollen Holt, 861 阅读, 收藏, 编辑
摘要: BTreeNode.h template<typename Type> class BTree;template<typename Type> class BTreeNode{public: friend BTree<Type>; BTreeNode(): m_nMaxSize(0), m_ptr(NULL), m_pparent(NULL){} BTreeNode(in... 阅读全文

2012-04-08 23:17 by Rollen Holt, 550 阅读, 收藏, 编辑
摘要: QueueNode.h template<typename Type> class LinkQueue;template<typename Type> class QueueNode{private: friend class LinkQueue<Type>; QueueNode(const Type item,QueueNode<Type> *next=NULL) :m_data(it... 阅读全文

哈夫曼树

2012-04-08 23:12 by Rollen Holt, 1180 阅读, 收藏, 编辑
摘要: BinTreeNode.htemplate<typename Type> class BinaryTree;template<typename Type> void Huffman(Type *, int, BinaryTree<Type> &);template<typename Type> class BinTreeNode{public: friend class BinaryTree<Type>; friend void Huffman<Type>(Type *, int, BinaryTree<Ty 阅读全文

2012-04-08 23:09 by Rollen Holt, 768 阅读, 收藏, 编辑
摘要: MyString.h const int MAXSIZE=100;class CMyString{public: CMyString(const CMyString& copy); CMyString(const char *init); CMyString(); ~CMyString(){ delete[] m_pstr; } int Length() const{ return m... 阅读全文

优先级队列

2012-04-08 23:06 by Rollen Holt, 1162 阅读, 收藏, 编辑
摘要: QueueNode.h template<typename Type,typename Cmp> class PriorityQueue;template<typename Type,typename Cmp> class QueueNode{private: friend class PriorityQueue<Type,Cmp>; QueueNode(const Type item,Q... 阅读全文

链式队列

2012-04-08 23:03 by Rollen Holt, 755 阅读, 收藏, 编辑
摘要: QueueNode.h template<typename Type> class LinkQueue;template<typename Type> class QueueNode{private: friend class LinkQueue<Type>; QueueNode(const Type item,QueueNode<Type> *next=NULL) :m_data(it... 阅读全文

顺序队列

2012-04-08 23:02 by Rollen Holt, 1222 阅读, 收藏, 编辑
摘要: SeqQueue.h template<typename Type> class SeqQueue{public: SeqQueue(int sz):m_nrear(0),m_nfront(0),m_ncount(0),m_nMaxSize(sz){ m_pelements=new Type[sz]; if(m_pelements==NULL){ cout<<"Applicatio... 阅读全文

链式栈

2012-04-08 22:59 by Rollen Holt, 719 阅读, 收藏, 编辑
摘要: StackNode.h template<typename Type> class LinkStack;template<typename Type> class StackNode{private: friend class LinkStack<Type>; StackNode(Type dt,StackNode<Type> *next=NULL):m_data(dt),m_pnext(... 阅读全文

顺序栈

2012-04-08 22:57 by Rollen Holt, 835 阅读, 收藏, 编辑
摘要: SeqStack.h template<typename Type> class SeqStack{public: SeqStack(int sz):m_ntop(-1),m_nMaxSize(sz){ m_pelements=new Type[sz]; if(m_pelements==NULL){ cout<<"Application Error!"<<endl; exit(... 阅读全文

循环链表

2012-04-08 22:54 by Rollen Holt, 1666 阅读, 收藏, 编辑
摘要: ListNode.h template<typename Type> class CircularList;template<typename Type> class ListNode{private: friend class CircularList<Type>; ListNode():m_pnext(NULL){} ListNode(const Type item,ListNode<... 阅读全文

双向链表

2012-04-08 22:52 by Rollen Holt, 1642 阅读, 收藏, 编辑
摘要: NodeList.h template<typename Type> class DoublyList;template<typename Type> class ListNode{private: friend class DoublyList<Type>; ListNode():m_pprior(NULL),m_pnext(NULL){} ListNode(const Type ite... 阅读全文

单链表

2012-04-08 22:47 by Rollen Holt, 1207 阅读, 收藏, 编辑
摘要: template<typename Type> class SingleList;template<typename Type> class ListNode{private: friend typename SingleList<Type>; ListNode():m_pnext(NULL){} ListNode(const Type item,ListNode<Type> *next=N... 阅读全文

顺序表

2012-04-08 22:42 by Rollen Holt, 2528 阅读, 收藏, 编辑
摘要: Seqlist.h const int DefaultSize=100;template <typename Type> class SeqList{public: SeqList(int sz=DefaultSize) :m_nmaxsize(sz),m_ncurrentsize(-1){ if(sz>0){ m_elements=new Type[m_nmaxsize]; }... 阅读全文

2012-04-08 21:54 by Rollen Holt, 701 阅读, 收藏, 编辑
摘要: MinHeap.h template<typename Type> class MinHeap{public: MinHeap(int size):m_nMaxSize(size > defaultsize ? size : defaultsize) ,m_pheap(new Type[m_nMaxSize]),m_ncurrentsize(0){} MinHeap(Type heap... 阅读全文

线索二叉树

2012-04-08 21:49 by Rollen Holt, 724 阅读, 收藏, 编辑
摘要: ThreadNode.h template<typename Type> class ThreadTree;template<typename Type> class ThreadInorderIterator;template<typename Type> class ThreadNode{public: friend class ThreadTree<Type>; friend cla... 阅读全文