博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据结构实现时所需的成员变量、标准对外接口
阅读量:5131 次
发布时间:2019-06-13

本文共 1480 字,大约阅读时间需要 4 分钟。

1. vector

typedef int Rank;template 
class Vector{protected: Rank _size; Rank _capacity; T* _elem; };

vector 的本质在于其底部维护的是一个一维数组(某种意义上说,vector 是对一维数组的 adapter 配接器)。在经典的数据结构中,对一维数组进行进一步拓展封装的还包括,binary heap(完全二叉树);一般而言,只要对一维数组进行封装的场合,都会提供另外的两个成员属性,

typedef struct HeapStruct {    int Capacity;                   // 当前所放体积    int Size;                       // 容量    ElementType* Elements;}* PriorityQueue;

有了 Capacity 以及 Size 这两个成员变量,便可轻易地实现另外两个公共接口,判断容器是否为空或是否为满。

  • insert:⇒ 是否为满;
  • delete:⇒ 是否为空;

2. stack

  • stack@vector

    #include "../Vector/Vector.h" template 
    class Stack: public Vector
    { public: //size()、empty()以及其它开放接口,均可直接沿用 void push(T const& e) { insert(size(), e); } T pop() { return remove(size() - 1); } T& top() { return (*this)[size() - 1]; } };

3. 二叉搜索树

  • 查找(search)、插入()、删除;

    template 
    class BST :public BinTree
    {public: virtual BinNodePosi(T)& search(const T& e); virtual BinNodePosi(T) insert(const T& e); virtual bool remove(const T& e); // 一般常用作其它特定二叉搜索树的基类, // 需要修改相关(search、insert、remove)接口};

4. AVL 树

AVL 树是平衡因子受限的二叉搜索树,对于二叉搜索树的三个核心成员函数,search、insert、remove 函数,仅需要修改其中的 insert 和 remove 函数。

#include "../BST/BST.h"template 
class AVL :public BST
{public: BinNode
* insert(const T& e); bool remove(const T& e);}

转载于:https://www.cnblogs.com/mtcnn/p/9423711.html

你可能感兴趣的文章
LeetCode - Combinations
查看>>
游戏开发常用算法
查看>>
Real-Time Rendering 笔记
查看>>
如何理解HTML结构的语义化
查看>>
Intellij IDEA(eclipse设置)常用快捷键
查看>>
c语言字符输出格式化
查看>>
数组方法pop() push() unshift() shift()
查看>>
jq阻止事件冒泡,模拟下拉列表
查看>>
Python数据分析I
查看>>
数据库增删改查操作
查看>>
java解析xml的几种方式
查看>>
【驱动】第7课、块设备驱动之学习笔记
查看>>
C# WeakEvent
查看>>
Lodash js数据操作库
查看>>
珍惜每段平凡的生活
查看>>
UVA10815 - 详解Andy's First Dictionary
查看>>
2014第五届蓝桥杯JAVA本科B组_猜字母
查看>>
SignalR简介
查看>>
gbk和gb2312的区别
查看>>
Android工程方法数超过64k,The number of method references in a .dex file cannot exceed 64K.
查看>>