C++构建堆
来源:互联网 发布:华为手机网络连接异常 编辑:程序博客网 时间:2024/04/28 18:10
class Heap{public: Heap(int); ~Heap(); void maxHeap(int x); int leftChild(int x); int rightChild(int x); int parent(int x); void init(int *); void constructHeap(); void print(); void insertHeap(int );private: int *heap; int m_size;};Heap::Heap(int size):m_size(size){ heap = (int*) malloc(sizeof(int) * m_size);}Heap::~Heap(){ free(heap);}int Heap::leftChild(int x){ return 2 * x +1;}int Heap::rightChild(int x){ return 2 * x + 2;}int Heap::parent(int x){ return (x-1)/2;}void Heap::maxHeap(int x){ int max = 0; if(leftChild(x) < m_size){ max = leftChild(x); if( (rightChild(x) < m_size) && (heap[max] < heap[rightChild(x)])){ max = rightChild(x); } if(heap[max] > heap[x]){ swap(heap[x] , heap[max]); } maxHeap(max); }else{ return; }}void Heap::init(int* x){ for(int i = 0 ; i < m_size ;++i){ heap[i] = x[i]; }}void Heap::constructHeap(){ for(int i = (m_size - 1)/2 ; i >= 0 ;--i ){ maxHeap(i); }}void Heap::print(){ for(int i = 0 ; i < m_size ; ++i){ cout<<heap[i]<<" "; } cout<<endl;}void Heap::insertHeap(int d){ if(heap[0] > d){ heap[0] = d; maxHeap(0); }}struct Node{ int data; struct Node* next; Node(int k){ data = k; next = NULL; }};
链表:
class LinkList{public: void insert(int d); void print(); LinkList(); void reverse();private: Node* head;};void LinkList::insert(int d){ if(head == NULL){ head = new Node(d); }else{ Node* p = head; while(p->next != NULL){ p = p->next; } p->next = new Node(d); }}void LinkList::print(){ Node* p = head; while(p != NULL){ cout<<p->data<<endl; p = p->next; }}LinkList::LinkList(){ head = NULL;}void LinkList::reverse(){ Node* p = head; Node* q = head->next; Node* r = head->next->next; p->next = NULL; while(r != NULL){ q->next = p; p = q; q = r; r = r->next; } q->next = p; head = q;}
- 构建堆
- 堆的构建
- C++构建堆
- 简单构建最小堆
- 最大堆的构建。
- C++构建堆结构
- c++&&堆
- 堆的构建以及利用堆排序
- 堆的构建与堆排序
- 八.堆与堆的构建
- 构建一个二叉堆实例
- 系统构建堆的函数
- 构建堆的时间复杂度
- 堆排序构建大根堆 java
- 数据结构之二叉堆(构建堆,堆排序)-(七)
- 数据结构之二叉堆(构建堆,堆排序)
- 堆的构建、堆的插入、堆的删除、堆排序
- 用堆积木方式构建Mobile Market
- HDFS dfsclient读文件过程 源码分析
- 一个cocos2dx 游戏解读(SceneStart)
- VS2005(vs2008,vs2010)使用map文件查找程序崩溃原因
- uva 100 The 3n + 1 problem
- ZFS Folder Permissions (chmod) and ACL Settings on Nexenta
- C++构建堆
- 面试 准备篇
- 简单实现内网主机通过防火墙nat回环路由实现安全互访
- 游戏更新-拖拉机&升级 Android
- HDFS dfsclient写文件过程 源码分析
- Spring MVC 框架搭建及详解
- How to optimize NexentaStor performance?
- 中断标志字是自动置位的吗
- 皮肤切换