随笔分类 - 数据结构
摘要:源地址:http://www.ruanyifeng.com/blog/2015/09/matrix-multiplication.html 大多数人在高中,或者大学低年级,都上过一门课《线性代数》。这门课其实是教矩阵。 刚学的时候,还蛮简单的,矩阵加法就是相同位置的数字加一下。 矩阵减法也类似。 矩
阅读全文
摘要:平衡二叉树定义(AVL):它或者是一颗空树,或者具有以下性质的二叉树:它的左子树和右子树的深度之差的绝对值不超过1,且它的左子树和右子树都是一颗平衡二叉树。平衡因子(bf):结点的左子树的深度减去右子树的深度,那么显然-1“两个结点的变换”如图:就拿第一个来说->点100和101的变换:点101占据...
阅读全文
摘要:算法和数据结构是计算机科学的核心内容。作为程序员,编程是我们的实战项目。然而,写出程序还不够。一个程序在应对一些大型而复杂的情况时,会耗费大量的时间。我们可以很容易写出一个从文件中找到一个词的程序,比如逐词扫描,看是否相符。但如果我们的文件有几十TB,而且要从文件中找到上百个词,逐个扫描的办法就几乎...
阅读全文
摘要:原地址:http://blog.chinaunix.net/uid-22299725-id-2436722.html1.排序概述2.内部排序2.1插入排序(直接插入排序) 有一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序,这个时候就要用到一种新的排序方法——插入排序,插入排序的基本操作就是将一个数据插入到已经排好序的有序数据中,从而得到一个新的、个数加一的有序数据,算法适用于少量数据的排序,时间复杂度为O(n^2)。是稳定的排序方法插入排序示例:语法:voidInsort(double*a,intn);参数:double*a:待排序数组n:数组
阅读全文
摘要:今天用到了二叉树,长时间不用,都快忘了,所以就练习着写了一个二叉树,采用的递归遍历。具体代码如下: 1 #include 2 using namespace std; 3 typedef struct BiTNode 4 { 5 char data; 6 struct BiTNode *lchild,*rchild; 7 }BiTNode,*biTree; 8 9 class MyBigTree 10 { 11 public: 12 MyBigTree(){} 13 ~MyBigTree(){} 14 void Create(biT...
阅读全文
摘要:队列同栈一样,也是一种特殊的线性表。主要特性是先进先出。主要函数包括:入列、出列、清空等主要代码如下://测试队列的数据结构#include using namespace std;template class squeuenode{public: squeuenode(){next=NULL;} T data; squeuenode *next;};template class Myqueue{public: unsigned int squeuelength; squeuenode *node; squeuenode *rear; squeuenode *front;public: Myq
阅读全文
摘要:栈是一种特殊的线性表,主要是先进后出。主要函数包括:压栈、出栈、清空栈、栈长度主要代码如下:#include using namespace std;templateclass sstackNode{public: sstackNode(){next=0;} T data; sstackNode *next;};template class Mystack{public: Mystack();//初始化 unsigned int MystackLength();//返回栈的长度 void push(T x);//入栈 void pop();//出栈 T top();//获取栈顶数据 void
阅读全文
摘要:线性表是在一种常见的数据结构,主要包括插入、删除、查找等功能。主要代码如下:#include using namespace std;//定义基类template class slistNode{public: slistNode(){next=NULL;} T data; slistNode *next;protected:private:};//定义链表类template class myList{public: myList(); unsigned int length(); void add(T x); void traversal(); bool isEmpty(); void sd
阅读全文

浙公网安备 33010602011771号