• AI创作!更聪明、更完整、原创作!
  • 一款基于BingBot的超级AI机器人,问答、聊天、创作、写文案,更高效便捷的获取信息、知识和灵感!
🔥点击使用 - AI问答专业版

利用vector实现抽象小顶堆MinHeap类,设计出堆方法DeleteMin(Type E),入堆方法Insert(Type E),并能异常处理OutOfBounds

时间2023-10-22 15:27:59 提问来自 河南信阳市 的网友 分类AI文字 浏览234 热度0
下面是利用vector实现抽象小顶堆MinHeap类的代码: ```cpp #include <iostream> #include <vector> template<class Type> class MinHeap { private: std::vector<Type> heap; public: MinHeap() = default; void Insert(Type element) { heap.push_back(element); // 将元素插入末尾 UpAdjust(heap.size() - 1); // 上浮调整 } void DeleteMin() { if (heap.empty()) { throw std::out_of_range("Heap is empty."); // 抛出越界异常 } std::swap(heap[0], heap[heap.size() - 1]); // 将最后一个元素与根节点交换 heap.pop_back(); // 删除最后一个元素 DownAdjust(0); // 下沉调整 } private: void UpAdjust(int child) { int parent = (child - 1) / 2; Type temp = heap[child]; while (child > 0 && temp < heap[parent]) { heap[child] = heap[parent]; child = parent; parent = (child - 1) / 2; } heap[child] = temp; } void DownAdjust(int parent) { int child = parent * 2 + 1; Type temp = heap[parent]; while (child < heap.size()) { if (child + 1 < heap.size() && heap[child] > heap { } if (temp <= heap[child]) { break; } heap[parent] = heap[child]; parent = child; child = parent * 2 + 1; } heap[parent] = temp; } }; int main() { MinHeap<int> minHeap; try { minHeap.DeleteMin(); // 抛出越界异常 } catch (std::out_of_range& e) { std::cout << "Exception caught: " << e.what() << std::endl; } minHeap.Insert(4); minHeap.Insert(8); minHeap.Insert(3); minHeap.Insert(2); minHeap.Insert(1); minHeap.DeleteMin(); minHeap.DeleteMin(); std::cout << "Heap elements after delete: "; while (!minHeap.empty()) { std::cout << minHeap.top() << " "; minHeap.pop(); } std::cout << std::endl; return 0; } ``` 这里使用模板类`MinHeap`来实现小顶堆,底层采用`vector`来存储堆元素。`Insert`方法用于将元素插入堆中,并通过上浮调整维护堆的性质;`DeleteMin`方法用于删除堆顶元素,并通过下沉调整维护堆的性质。在`DeleteMin`方法中,如果堆为空,则抛出`std::out_of_range`越界异常。 你可以根据需要修改`Type`的数据类型,并在main函数中进行测试。

内容创作(普通版)

内容创作(高级版)

AI智能问答网 免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。
点击这里>>使用创作工场,更聪明、更完整、更原创!

上一篇 4应用区域分析与区域规划相关理论 谈谈一带一路 京津冀协同发展 长江经济带三大战略的认识 下一篇 出3道甲骨文的单选题,难度中等