1.堆的概念
参考:http://www.cnblogs.com/luchen927/archive/2012/03/08/2381446.html
堆(heap),一种数据结构,堆分为最大堆和最小堆,其实就是完全二叉树。最大堆要求节点的元素都要大于其孩子,最小堆要求节点元素都小于其左右孩子,两者对左右孩子的大小关系不做任何要求,其实很好理解。有了上面的定义,我们可以得知,处于最大堆的根节点的元...
分类:
编程语言 时间:
2015-05-07 12:30:53
阅读次数:
137
#include#include#define MAX 1000void myPush(int *stack,int *ptr,int data){ stack[++(*ptr)]=data;//如果写成stack[(*ptr)++]=data错误}int readMyStack(int *s...
分类:
其他好文 时间:
2015-05-02 12:19:01
阅读次数:
132
黑马程序员java培训 第十六天代码1.数据结构数据结构:用来存储数据的方式常见的数据结构:堆,栈,队列,数组,树2.数据结构之栈和队列栈:先进后出队列:先进先出3.数据结构之数组和链表数组:在内存中拥有一片连续的区域。内存地址是连续的。 特点:查询速度快,添加或删除操作性能比较低 ...
分类:
其他好文 时间:
2015-04-16 01:20:41
阅读次数:
140
参考书籍《数据结构与算法分析——C语言描述》
关于堆的一些基本概念,可参见小zz的另一篇博文。
/*本例程实现的是最小堆,最大堆类似*/
#include
#include
#include
#include
#define MAX 13
typedef struct BHeap
{
int Capacity;//堆的最大容量
int Size;//当前堆大小
in...
分类:
其他好文 时间:
2015-04-15 23:27:29
阅读次数:
235
题目描述: 堆栈是一种基本的数据结构。堆栈具有两种基本操作方式,push 和 pop。Push一个值会将其压入栈顶,而 pop 则会将栈顶的值弹出。现在我们就来验证一下堆栈的使用。输入: 对于每组测试数据,第一行是一个正整数 n,0 st=new Stack();11 Str...
分类:
其他好文 时间:
2015-04-11 19:14:43
阅读次数:
194
线性表:是一个顺序存储的数据集合,它支持在表中任何位置进行插入和删除操作
堆栈:可以看做是一种特殊的线性表,它只允许在线性表的一端(栈顶)进行插入和删除操作
队列:表示一个排队等候的队伍,它允许在队伍的后端进行插入操作,队伍的前端进行删除操作
二叉树:是一种能够有效的进行数据的查找,排序,插入和删除等操作的数据结构。
堆:是一种可用于开发有效排序和优先队列的算法的数据结构由于栈只允许在栈顶进...
分类:
其他好文 时间:
2015-04-06 15:44:35
阅读次数:
136
1、顺序存储//栈的顺序存储实现//Stack.h#ifndef STACK_H_#define STACK_H_#define ElementType int #define MaxSize 100typedef struct _Node{ ElementType data[MaxSize]...
分类:
其他好文 时间:
2015-04-05 21:45:16
阅读次数:
117
对于堆排序,首先要先知道什么是堆数据结构,堆数据结构就是一个完全二叉树,但是它有自己的性质.
例如最大堆的性质为:A[PARENT[i]]>=A[i];即每一个结点的值大于等于其左右孩子的值,小于等于其父节点的值。我们在这里只讨论最大堆的情况。我们知道一颗完全二叉树对应一个最大堆的形式,我们要做的就是将二叉树转化为最大堆,这就是所谓的最大堆的维护,我们定义函数MaxheapFY(A,i)来进行操作...
分类:
编程语言 时间:
2015-03-20 11:04:21
阅读次数:
177
#include
#include
// 创建一个结构体
typedef struct node{
int data;
struct node *left,*right;
}BiTreeNode;
int rear=0,front=0;//全局变量
//创建完全二叉树
BiTreeNode *CreateBiTree(int a[],BiTreeNode **Q,int n)...
分类:
编程语言 时间:
2015-03-13 00:25:14
阅读次数:
224