数据结构
文章平均质量分 64
长弓的坚持
这个作者很懒,什么都没留下…
展开
-
C++实现二叉树
#includeusing namespace std;class node{private:node* left;node* right;int data;public:friend class bstree;node();node(int item){data=item;left=NULL;right=NULL;}void s转载 2014-04-15 23:05:59 · 506 阅读 · 0 评论 -
C++实现树的建立,查找,遍历输出
#include#includeusing namespace std;templateclass myqueue;templateclass Node{friend myqueue;private:T data;Node* next;public:Node(){next=0;}Node(T d){data原创 2014-04-11 17:12:33 · 1749 阅读 · 0 评论 -
常用时间复杂度
按数量级递增排列,常见的时间复杂度有:常数阶O(1),对数阶O(log2n),线性阶O(n),线性对数阶O(nlog2n),平方阶O(n^2),立方阶O(n^3),...,k次方阶O(n^k),指数阶O(2^n)。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越低。转载 2014-08-25 22:08:06 · 4058 阅读 · 0 评论 -
C++实现链表的创建、插入、删除
#include using namespace std;struct node{ int data; node *next;};class linklist {private: node *head;public: linklist(); void creat原创 2014-04-02 22:13:27 · 748 阅读 · 0 评论 -
排序算法的稳定性
概念编辑假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=rj,且ri在rj之前,而在排序后的序列中,ri仍在rj之前,则称这种排序算法是稳定的;否则称为不稳定的。2判断方法编辑对于不稳定的排序算法,只要举出一个实例,即可说明它的不稳定性;而对于稳定的排序算法,必须对算法进行分析从而得到稳定的特性。转载 2014-08-31 10:35:11 · 386 阅读 · 0 评论 -
C++两个队列实现一个栈
//构建队列#includeusing namespace std;struct queuenode{int data;queuenode* next;};class queue{private:queuenode* head;public:queue(){head=new queuenode;head->next=NULL;}~qu原创 2014-08-31 09:49:03 · 405 阅读 · 0 评论 -
C++实现链表函数
//链表,头结点中要放置元素#includeusing namespace std;struct listnode{int data;listnode* next;};listnode* createlistnode(int value){listnode* pnode=new listnode;pnode->data=value;pnode->ne原创 2014-09-15 10:24:01 · 674 阅读 · 0 评论 -
位图数据结构的
介绍(20120511)位图就是通过将数组下标与应用中的一些值关联,数组中该下标所指定的位置上的元素可以用来标识应用中值的情况(是否存在 or 数目 or 。。。)。 位图中的值可以是计数、标识(如例1)。可以运用在快速查找、排重、删除?、排序、压缩数据等。实现不同语言版本相关应用压缩 排序转载 2014-10-24 14:09:30 · 548 阅读 · 0 评论 -
C++构建二叉树
//这里构建的是二叉树不是普通树,它最多只有两个孩子。#includeusing namespace std;struct Binarytreenode{int value;Binarytreenode* left;Binarytreenode* right;};Binarytreenode* creatBinarytree(int value){Bin原创 2014-09-29 21:34:03 · 1190 阅读 · 1 评论 -
C++构建普通树
//构建普通意义上的树,不知道有几个孩子节点,因此用到了一个顺序容器vector来放孩子节点,因此在树的节点中children是一个指针容器#include#includeusing namespace std;struct treenode{int value;vector children;};treenode* createtreenode(int dat原创 2014-09-29 21:37:54 · 3011 阅读 · 0 评论 -
C++实现复杂链表
#includeusing namespace std;struct ComplexListNode{int m_nValue;ComplexListNode* m_pNext;ComplexListNode* m_pSibling;};ComplexListNode* CreateNode(int nValue){ ComplexListNode*转载 2014-09-29 22:17:51 · 500 阅读 · 0 评论 -
C++实现有哨兵的双向循环链表
C++实现有哨兵的双向循环链表:#include#includeusing namespace std;templateclass Node{private:T data;Node* next;public:Node(){Node=NULL;}Node(T d){data=d;next=NULL;}};原创 2014-04-11 10:39:04 · 852 阅读 · 0 评论 -
C++实现队列
//C++实现队列#includeusing namespace std;templatestruct node{T data;node* next;};templateclass Queue{public:Queue();void push(T data1);void pop();void display();~Queue();原创 2014-04-08 19:14:21 · 888 阅读 · 0 评论 -
c++实现搜索二叉树
#include using namespace std;//枚举类,前中后三种遍历方式enum ORDER_MODE{ ORDER_MODE_PREV = 0, ORDER_MODE_MID, ORDER_MODE_POST};//树节点的结构体template struct BinaryNode{T element;BinaryNode原创 2014-04-16 09:00:48 · 563 阅读 · 0 评论 -
C++实现树
#include using namespace std;const int MaxCSTreeSize = 20; templateclass CSNode{public:T data;CSNode* firstchild;CSNode* nextsibling;public:CSNode();CSNode(CSNode* fchild,CSNod转载 2014-04-15 23:05:17 · 1076 阅读 · 0 评论 -
C++实现Hash表
C++实现Hash表#include using namespace std; typedef int KeyType; //设关键字域为整形,需要修改类型时,只需修改这里就可以 const int NULLKEY=0; //NULLKEY表示该位置无值 int c=0; //用来统计冲突次数 struct Elemtype /原创 2014-04-16 16:42:21 · 944 阅读 · 0 评论 -
C++实现桶排序
C++实现桶排序:#includeusing namespace std;struct node{double data;node* next;};void bucketsort(double *a,int n){node *b=new node[n];for(int i=0;i{b[i].data=0;b[i].next=NUL原创 2014-04-03 09:53:15 · 792 阅读 · 0 评论 -
C++前插法实现链表
C++前插法实现链表://前插法实现链表#includeusing namespace std;struct node{int data;node *next;};class linklist{private:node *head;public:linklist();void create();void display()原创 2014-04-03 21:57:29 · 999 阅读 · 0 评论 -
栈的两种C++实现
栈(stack)是限制插入和删除只能在一个位置上进行的表,该位置是表的末端,叫做栈的顶(top),它是后进先出(LIFO)的。对栈的基本操作只有push(进栈)和pop(出栈)两种,前者相当于插入,后者相当于删除最后的元素。栈本质上是一种受限制的表,所以可以使用任何一种表的形式来实现它,最常用的是使用链表和数组。使用链表的特点:不需要指定其大小,不会浪费空间;进栈和出栈涉及到动态内原创 2014-04-03 21:15:43 · 485 阅读 · 0 评论 -
红黑树介绍
红黑树是一种自平衡二叉查找树,是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它是在1972年由鲁道夫·贝尔发明的,他称之为"对称二叉B树",它现代的名字是在 Leo J. Guibas 和 Robert Sedgewick 于1978年写的一篇论文中获得的。它是复杂的,但它的操作有着良好的最坏情况运行时间,并且在实践中是高效的: 它可以在O(log n)时间内做查找,插入和转载 2014-04-21 09:40:24 · 434 阅读 · 0 评论 -
C++实现红黑树
C++实现红黑树#ifndef _RED_BLACK_TREE_HPP_#define _RED_BLACK_TREE_HPP_ #include #include using namespace std;enum RBTColor{RED, BLACK};template class RBTNode{ public:原创 2014-04-23 11:24:00 · 602 阅读 · 0 评论 -
红黑树的经典介绍
目录1 红黑树的介绍2 红黑树的应用3 红黑树的时间复杂度和相关证明4 红黑树的基本操作(一) 左旋和右旋5 红黑树的基本操作(二) 添加6 红黑树的基本操作(三) 删除 作者:Sky Wang 于 2013-08-08 概述:R-B Tree,又称为“红黑树”。本文参考转载 2014-04-21 10:26:04 · 1013 阅读 · 0 评论 -
算法导论——二叉查找树
摘要: 本章介绍了二叉查找树的概念及操作。主要内容包括二叉查找树的性质,如何在二叉查找树中查找最大值、最小值和给定的值,如何找出某一个元素的前驱和后继,如何在二叉查找树中进行插入和删除操作。在二叉查找树上执行这些基本操作的时间与树的高度成正比,一棵随机构造的二叉查找树的期望高度为O(lgn),从而基本动态集合的操作平均时间为θ(lgn)。1、二叉查找树 二叉查找树是按照转载 2014-04-09 15:04:31 · 3519 阅读 · 0 评论 -
数据结构基础-Hash Table详解
理解Hash哈希表(hash table)是从一个集合A到另一个集合B的映射(mapping)。映射是一种对应关系,而且集合A的某个元素只能对应集合B中的一个元素。但反过来,集合B中的一个元素可能对应多个集合A中的元素。如果B中的元素只能对应A中的一个元素,这样的映射被称为一一映射。这样的对应关系在现实生活中很常见,比如: A -> B转载 2014-10-27 22:40:30 · 632 阅读 · 0 评论