个人学习笔记:堆的实现(c++数组实现)

1、自定义实现:

使用时为防止出现不能运行的情况(最好.h和.cpp文件都导入,似乎使用模板类时有时会出现只导入.h文件会一直报错的情况)
(1)小根堆实现:
①MinHeap.h

#include <iostream>

/**
 * 小根堆
 */
template <class T>
class MinHeap{
   
public:
    MinHeap();//构造函数
    ~MinHeap(){
   delete []heap;};//析构函数
    bool isEmpty(){
    return (heapSize==0);};//当堆为空时返回true
    int size(){
    return heapSize;};//返回堆的大小
    T top();//返回堆的根节点
    T pop();//返回并删除堆的根节点
    void push(const T& element);//向堆中插入元素,当堆满时扩展堆的容量
private:
    int capacity;//堆容量
    int heapSize;//堆的元素数量
    T* heap;//保存堆数据的数组
};

②MinHeap.cpp


#include "MinHeap.h"

/**
 * 小根堆的具体实现
 */
template<class T>
MinHeap<T>::MinHeap() {
   //构造函数
    //this->capacity=capacity;
    capacity=16;
    heapSize=0;
    heap=new T[capacity+1];
}

template<class T>
T MinHeap<T>::top(){
   //返回堆的根节点
    return heap[
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你好!关于学习数据结构的C语言笔记,我可以给你一些基本的指导和概念。数据结构是计算机科学中非常重要的一门课程,它涉及存储和组织数据的方法。C语言是一种常用的编程语言,很适合用于实现各种数据结构。 下面是一些数据结构的基本概念,你可以在学习笔记中包含它们: 1. 数组(Array):一种线性数据结构,可以存储相同类型的元素。在C语言中,数组是通过索引访问的。 2. 链表(Linked List):也是一种线性数据结构,但不需要连续的内存空间。链表由节点组成,每个节点包含数据和指向下一个节点的指针。 3. 栈(Stack):一种后进先出(LIFO)的数据结构,类似于装满物品的箱子。在C语言中,可以使用数组或链表来实现栈。 4. 队列(Queue):一种先进先出(FIFO)的数据结构,类似于排队等候的队伍。同样可以使用数组或链表来实现队列。 5. 树(Tree):一种非线性数据结构,由节点和边组成。每个节点可以有多个子节点。二叉树是一种特殊的树结构,每个节点最多有两个子节点。 6. 图(Graph):另一种非线性数据结构,由节点和边组成。图可以用来表示各种实际问题,如社交网络和地图。 这只是数据结构中的一些基本概念,还有其他更高级的数据结构,如、哈希表和二叉搜索树等。在学习笔记中,你可以介绍每个数据结构的定义、操作以及适合使用它们的场景。 希望这些信息对你有所帮助!如果你有任何进一步的问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值