(1小时数据结构)数据结构c++描述(三)--- 线性表间接寻址
线性表间接寻址
目录
类定义:
构造函数与析构函数 :
查找Find(int k, T & x):
寻找 Search(const T & x):
插入 Insert(int k, const T & x):
输出函数:
测试函数:
测试结果:
声明代码
来看下间接寻址的基本概念吧:
间接寻址(indirect addressing)是公式化描述和链表描述的组合。采用这种描述方法,可以保留公式化描述方法的许多优点——可以根据索引在 ( 1 )的时间内访问每个元素、可采用二叉搜索方法在对数时间内对一个有序表进行搜索等等。与此同时,也可以获得链表描述方法的重要特色——在诸如插入和删除操作期间不必对元素进行实际的移动。因此,大多数间接寻址链表操作的时间复杂性都与元素的总数无关.
基本理论图:
类定义:
/*
数组结构中的线性表样式 间接寻址对应书中代码:数据结构算法与应用c++描述程序编写:比卡丘不皮编写时间:2020年7月6日 10:45:02
*/
#pragma once#include <iostream>
#include "all_error.h"using namespace std;template<class T>
class indirectList
{
public:indirectList(int MaxListSize = 10);~indirectList();bool isEmpty()const { return length == 0; }int Length() const { return length; }bool Find(int k, T &x) const; //查找第k可的数据,没有为falseint Search(const T & x) const; //查找数据函数indirectList<T> & Delete(int k, T & x); //删除函数indirectList<T> & Insert(int k, const T& x); //插入函数void Output(ostream & out)const;
private:T **table;int length, MaxSize;
};
构造函数与析构函数 :
template<class T>indirectList<T>::indirectList(int MaxListSize)
{ //构造函数MaxSize = MaxListSize;table = new T *[MaxSize];length = 0;
}template<class T>
indirectList<T>::~indirectList()
{//析构函数for (int i = 0; i < length; i++){delete table[i];}delete[] table;
}
查找Find(int k, T & x):
template<class T>
bool indirectList<T>::Find(int k, T & x) const
{if (k < 1 || k>length){return false;}x = *table[k - 1];return true;
}
寻找 Search(const T & x):
template<class T>
int indirectList<T>::Search(const T & x) const
{for (int i = 1; i < length; i++){if (*table[i-1] == x){return i;}}return 0;
}
插入 Insert(int k, const T & x):
indirectList<T>& indirectList<T>::Insert(int k, const T & x)
{if (k<0 || k > length){throw OutOfBounds();}if (length == MaxSize){throw Noman();}//向后移动一位for (int i = length - 1; i >= k; i--){table[i + 1] = table[i];}table[k] = new T;*table[k] = x;length++;return *this;
}
输出函数:
template<class T>
void indirectList<T>::Output(ostream & out) const
{for ( int i = 0; i<length; i++){out << *table[i] << " ";}
}//重载 <<template<class T>
ostream & operator<<(ostream & out, const indirectList<T> & x)
{x.Output(out);return out;
}
测试函数:
void testindirectList()
{indirectList<int> indert;cout << "测试构造函数对应的数据" << endl;cout << "长度: " << indert.Length() << endl;cout << "链表数据: " << indert << endl;cout << endl;cout << "测试插入函数: 插入数据 Insert(1,1).Insert(2,2).Insert(3,3):"<< indert.Insert(0, 1).Insert(1, 2).Insert(2, 3) << endl;cout << "Insert(1, 6) " << indert.Insert(1, 6);cout << endl;//测试删除函数int x;indert.Delete(1, x);cout << "Delete(1, x): " << x << endl;cout << "链表数据: " << indert << endl;cout << endl;//find indert.Find(2, x);cout << "链表数据: " << indert << endl;cout << "Find(2, x): " << x << endl;//测试Search函数cout << "Search(2) " << indert.Search(2) << endl;}
测试结果:
声明代码
本章例子代码为《数据结构与算法 c++描述 第3版》中的间接寻址代码,这里没有添加一些代码。
喜欢的朋友可以关注我,一起进步。
(1小时数据结构)数据结构c++描述(三)--- 线性表间接寻址相关推荐
- 数据结构与算法笔记(二) 线性表(数组描述)
c++常用的数据描述方法是数组描述和链式描述,线性表可以用来说明这两方法,先介绍数组描述的线性表.后面再介绍链式描述的线性表. C++ STL容器vector和list相当于线性表的数组描述和链式描述 ...
- 《大话数据结构》| 第3章 线性表
目录 3.2 线性表的定义 3.3 线性表的抽象数据类型 3.4 线性表的顺序存储结构 3.4.1 顺序存储定义 3.4.2 顺序存储方式 3.4.3 数据长度与线性表长度的区别 3.4.4 地址计算 ...
- 数据结构(C语言)——线性表(定义,基本操作)
数据结构(C语言)--线性表(定义,基本操作) 一. 线性表的定义 二.线性表的基本操作 什么时候要传入引用"==&=="----对参数的修改结果需要"==带回来 ...
- C语言数据结构线性表上机实验报告,数据结构实验报告实验一线性表_图文
数据结构实验报告实验一线性表_图文 更新时间:2017/2/11 1:23:00 浏览量:763 手机版 数据结构实验报告 实验名称: 实验一 线性表 学生姓名: 班 级: 班内序号: 学 号: ...
- 数据结构 严蔚敏 第二章 线性表
数据结构 严蔚敏 第二章 线性表 线性表:由n个(n>=0)数据特征相同的元素构成的有限序列. 线性表的类型定义表示和实现 顺序表 存储单元地址连续 随机存取 若每个元素占用 m 个存储单元,以 ...
- 数据结构实验1《基于线性表的图书管理系统》
数据结构实验1<基于线性表的图书管理系统> (visual studio 2019可运行) 输入及输出要求见<数据结构C语言(第二版)>严蔚敏版 [本文仅用于啥都看不懂还想交作 ...
- 2022天勤考研数据结构笔记 第2章 线性表
2022天勤考研数据结构笔记 第2章 线性表(更新中) 第2章 线性表 2.1 结构体定义 2.2 顺序表 2.3 单链表 2.4 双链表 2.5 循环链表 2.6 逆置问题(408重要考点) 第2章 ...
- 数据结构笔记(一) 线性表(C语言描述)
数据结构(一) 线性表 顺序表 存储结构 #define ElemType int #define MAXSIZE 100 typedef struct{ElemType *elem;//初始地址in ...
- C语言数据结构(大话数据结构——笔记1)数据结构绪论、算法、线性表
[C语言描述]<数据结构和算法> 说是这个教程是按照<大话数据结构>这本书来编写的:数据结构与算法经典书籍--大话数据结构(带配套源码) ↑废话太TM多了,换一个! [搞定数据 ...
- 【数据结构与算法】之线性表的应用和操作
数据结构概念 数据结构:是相互之间存在一种或多种特定关系的数据元素的集合. 数据结构的逻辑结构:数据对象中数据元素之间的相互关系,分为线性结构.树形结构.图形结构以及集合结构. 数据结构的物理结构:数 ...
最新文章
- 计算机 大学活动 游戏,朝花夕拾”——中国矿业大学计算机学院积极举办“那些年我们一起玩过的游戏”活动...
- 鸿蒙系统海外名称,新商标表明华为鸿蒙系统在海外或叫做“Harmony OS”
- 2013电赛总结【西电专用】
- Unix下5种I/O模型
- 网络配置辅导:多路由器如何使用多条ADSL线路
- Vue音乐项目笔记(三)
- 第12章第1讲位运算符与表达式
- python math库基本函数
- 使用Clip Converter网站下载Yotube视频
- decay_rate, decay_steps ,batchsize,iteration,epoch
- 玩转算法与数据结构 C++描述 选择排序
- ROS:bag数据包内容提取——雷达点云数据和imu数据
- 组装一台台式计算机的流程,如何组装电脑?组装电脑的操作流程!
- iqoo手机可以刷鸿蒙系统吗,华为老机型可以更新鸿蒙系统么-华为哪些老机型支持鸿蒙系统...
- C++ 没有找到接受const _Ty类型的左操作数的运算符
- USB device和USB host
- RNA 1. SCI 文章中读取 GEO 数据
- 地名翻译混乱 广东省质监局出台规范
- RabbitMQ与AMQP协议详解
- C#并发编程相关名词解释
热门文章
- PCIe总线的参考时钟与同步时钟的差异
- 【转】博弈论——acm
- 操作系统——进程管理
- cocos creator之自定义事件
- 竞争型神经网络:自组织映射神经网络(SOM)
- 计算机地图制图pdf,计算机地图制图(资料).pdf
- 给MK802(USB大小的Android4.0小PC)引出串口信号,变成ARM开发版
- 【LaTeX入门】02、CJK环境讲解
- java 中文转拼音_Java实现汉字转换拼音功能
- flutter ScrollController attached to multiple scroll views