随笔分类 - 数据结构与算法
摘要:二叉堆简介平时所说的堆,若没加任何修饰,一般就是指二叉堆。同二叉树一样,堆也有两个性质,即结构性和堆序性。正如AVL树一样,对堆的以此操作可能破坏者两个性质中的一个,因此,堆的操作必须要到堆的所有性质都被满足时才能终止。结构性质堆是一棵完全填满的二叉树,因为完全二叉树很有规律,所以它可以用一个数组表...
阅读全文
摘要:实现优先队列结构主要是通过堆完成,主要有:二叉堆、d堆、左式堆、斜堆、二项堆、斐波那契堆、pairing 堆等。1. 二叉堆1.1. 定义完全二叉树,根最小。存储时使用层序。1.2. 操作(1). insert(上滤)插入末尾 26,不断向上比较,大于26则交换位置,小于则停止。(2). delet...
阅读全文
摘要:#include#include"fatal.h"typedef char* ElementType;typedef unsigned int Index;typedef Index Position;struct HashTbl;typedef struct HashTbl *HashTable;...
阅读全文
摘要:#include#includetypedef char* ElementType;typedef unsigned int Index;#define MinTableSize 15struct ListNode;typedef struct ListNode *Position;struct H...
阅读全文
摘要:1、函数指针(指向函数的指针)在c语言中,一个函数总是占用一段连续的内存区,而函数名就是该函数所占内存区的首地址(入口地址),所以函数名跟数组名很类似,都是指针常量。函数指针就是指向这个入口地址的指针变量,注意函数指针是一个变量。#includevoid f(int);int main(){ ...
阅读全文
摘要:#include#include "fatal.h"struct TreeNode;typedef struct TreeNode *Position;typedef struct TreeNode *SearchTree;typedef int ElementType;SearchTree Mak...
阅读全文
摘要:#include#include "fatal.h"struct AvlNode;typedef struct AvlNode *Position;typedef struct AvlNode *AvlTree;typedef int ElementType ;AvlTree MakeEmpty(A...
阅读全文
摘要:AVLTree即(Adelson-Velskii-Landis Tree),是加了额外条件的二叉搜索树。其平衡条件的建立是为了确保整棵树的深度为O(nLogn)。平衡条件是任何节点的左右子树的高度相差不超过1.在下面的代码中,编程实现了AVL树的建立、查找、插入、删除、遍历等操作。采用C++类封装。...
阅读全文
摘要:排序二叉树对于我们寻找无序序列中的元素的效率有了大大的提高。查找的最差情况是树的高度。这里就有问题了,将无序数列转化为二叉排序树的时候,树的结构是非常依赖无序序列的顺序,这样会出现极端的情况。【如图1】: 这样的一颗二叉排序树就是一颗比较极端的情况。我们在查找时候,效率依赖树的高度,所以不希望这样...
阅读全文
摘要:先看个简单的:char *p,这定义了一个指针,指针指向的数据类型是字符型,char *(p)定义了一个指针P;char *p[4],为指针数组,由于[]的优先级高于*,所以p先和[]结合,p[]是一个数组,暂时把p[]看成是q,也就是char *(q),定义了一个指针q,只不过q是一个数组罢了,故...
阅读全文
摘要:二叉搜索树最大特征是:左边子结点的值#include #include typedef struct NODE{ NODE * pleft; NODE * pright; int ivalue;} node;/* 错误示例,实际上这个函数并没有连接起新建的结点void inser...
阅读全文
摘要:1、序详细实现了二叉查找树的各种操作:插入结点、构造二叉树、删除结点、查找、 查找最大值、查找最小值、查找指定结点的前驱和后继2、二叉查找树简介它或者是一棵空树;或者是具有下列性质的二叉树: (1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值; (2)若右子树不空,则右子树上所有结点的值...
阅读全文
摘要:#include #include #includeusing namespace std;struct Node { double coef; int expn; Node *next;};void CreatPolynomial(Node *&head, int n) ...
阅读全文
摘要:算法如下:#include#includevoid Sieve(int n){ int p,j,i; int A[n+1],L[n+1]; for(p=2;p<=n;p++) A[p]=p; for(p=2;p<=sqrt(n);p++) { ...
阅读全文
摘要:#includeint MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i0) sum=0; } return MinSum;}void...
阅读全文
摘要:#includeint MinSubsequenceSum(const int A[],int n){ int i,sum,MinSum; sum=MinSum=0; for(i=0;i0) sum=0; } return MinSum;}void...
阅读全文
摘要:动态规划的算法:#includeint MaxSubsequenceSum(const int A[],int n){ int i,sum,MaxSum; sum=MaxSum=0; for(i=0;iMaxSum) MaxSum=sum; if...
阅读全文
摘要:#includevoid equal(int a[],int N){ int i; for(i=0;i<N;i++) { if(i<a[i]) { printf("no exist\n"); printf("%...
阅读全文
摘要:#include#includevoid bubbleSort(int arr[],int n){ int i,j; for(i=n-1;i>0;i--) for(j=n-2;j>=n-i-1;j--) { if(arr[j+1]>arr...
阅读全文
摘要:#include #include // 第一题// 找出N个数的第k个最大者// 方法1:排序(冒泡),降序找出第k个值// 方法2:选前k个点进行降序排序,后面的数进行比较,// 如果数比第k个数小则忽略, 复杂度低于方法1#define TYPE int#define TESTBUBLESOR...
阅读全文

浙公网安备 33010602011771号