数据结构——向量

本文探讨了数据结构中的向量,重点讲解了ADT(抽象数据类型)支持的操作接口。在实现向量模板类时,特别提到了在merge函数中,使用方括号[]而非圆括号()的重要性,因为错误的使用可能导致内存错误,如HEAP CORRUPTION DETECTED。
摘要由CSDN通过智能技术生成

 

1.ADT支持的操作接口

 

操作接口 功能 适用对象
size() 报告向量当前的规模(元素总数) 向量
get(r) 获取秩为r的元素 向量
put(r, e) 用e替换秩为r元素的值 向量
insert(r, e) e作为秩为r元素插入,原后继元素依次后移 向量
remove(r) 删除秩为r的元素,返回该元素中原存放的对象 向量
disordered() 判断所有元素是否已按非降序排列 向量
sort() 调整各元素的位置,使之按非降序排列 向量
find(e) 查找等于e且秩最大的元素 向量
search(e) 查找目标元素e,返回不大于e且秩最大的元素 有序向量
deduplicate() 剔除重复元素 向量
uniquify() 剔除重复元素 有序向量
traverse() 遍历向量并统一处理所有元素,处理方法由函数对象指定 向量

 

向量模板类


#include <iostream>

typedef int Rank; //秩
#define DEFAULT_CAPACITY 3 //默认初始容量

template <typename T> class Vector{ //向量模板类
 public:
    Rank _size; int _capacity; T* _elem; //规模、容量、数据区
    void copyFrom (T const* A, Rank lo, Rank hi); //复制数组区间A[lo, hi)
    void expand(); //空间不足时扩容
    void shrink(); //装填因子过小时压缩
    Rank max (Rank lo, Rank hi); //选取最大元素
	bool bubble (Rank lo, Rank hi);
	void bubbleSort (Rank lo, Rank hi);
    void selectionSort (Rank lo, Rank hi); //选择排序算法
    void merge(Rank lo, Rank mi, Rank hi); //归并算法
    void mergeSort(Rank lo, Rank hi); //归并排序算法
  //public:
//构造函数  在内部维护一个数组_elem[]来储存元素
    Vector (int c = DEFAULT_CAPACITY, int s = 0, T v = 0) {//容量为c、规模为s、所有元素初始为v
  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值