基于C++的顺序表的实现
顺序表,是数据结构中按顺序方式存储的线性表,又称向量。具有方便检索的特点。以下,是笔者学习是基于C++实现的顺序表代码,贴上来当网页笔记用。
#include <iostream>
using namespace std;
template <class T>
class List{void clear();//释放顺序表 bool isEmpty();//判断顺序表是否为空 bool append(const T value);//在顺序表后添加value值 bool insert(const int p,const T value);//在p位置插入value值 bool del(const int p);//删除在p位置的值 bool getValue(const int p,T& value);//将p位置的值赋予value bool setValue(const int p,const T value);//将p位置的值设置为value bool getPos(int &p,const T value);//将值为value的位置赋予p
};
template <class T>
class arrList:public List<T> {private:T *aList; //存储顺序表的实例 int maxSize;//顺序表的最大值 int curLen;//顺序表的实际长度 int position;//顺序表的当前处理位置 public:arrList(const int size){//初始化顺序表 maxSize=size;aList=new T[maxSize];curLen=position=0;}~arrList(){//消除表实例 delete [] aList;}void clear(){//清空顺序表,成为空表 delete [] aList;curLen=position=0;aList=new T[maxSize];}bool isEmpty(){/*判断顺序表是否为空若curLen为空,即当前实际长度为空,即为空表 */if(curLen==0){return true;}else{return false;}} int length(){//返回顺序表的当前长度 return curLen; }bool append(const T value){/*在顺序表末插入value实际长度+1 */aList[curLen]=value;curLen++;}bool insert(const int p,const T value){int i;if(curLen>=maxSize){/*判断顺序表是否已满*/cout<<"The list is overflow"<<endl;return false;}if(p<0||p>curLen){/*判断请求合理性*/cout<<"Insertion point is illegal"<<endl;return false;}for(i=curLen;i>p;i--){/*将p后的数据后移*/aList[i]=aList[i-1];}/*将值置于p,curLen位置加1*/aList[p]=value;curLen++;return true;}bool del(const int p){int i;/*判断当前表是否为空,为空不删除*/if(curLen<=0){cout<<"No element to del"<<endl;return false;}/*判断请求合理性*/if(p<0||p>curLen-1){cout<<"deletion is illegal"<<endl;return false;}/*将位置p后的值前移,覆盖*/ for(i=p;i<curLen-1;i++){aList[i]=aList[i+1];}curLen--;return true;}bool getValue(const int p,T& value){//判断请求合理性 if(p<0||p>curLen-1){cout<<"No such element"<<endl;return false;}value=aList[p];}bool setValue(const int p,const T value){//判断请求合理性 if(p<0||p>curLen-1){cout<<"No such element"<<endl;return false;}aList[p]=value;}bool getPos(int &p,const T value){int i;for(i=0;i<curLen;i++){if(value==aList[i]){p=i;return true;}return false;}}
};
转载于:https://www.cnblogs.com/Seanit/p/3420654.html
基于C++的顺序表的实现相关推荐
- 数据结构之基于顺序表的插入排序
基于顺序表的插入排序(常规插入排序,二分插入排序,希尔排序) 这三种的都是插入排序算法的时间复杂度基本相似,但由于希尔排序不同于其他排序方式的思想,所以其时间复杂度会有所不同. 常规插入排序:O(n2 ...
- 基于顺序表的图书管理系统(C语言)
Visual Studio编译环境 功能: 0.退出. 1.基于顺序存储结构的图书信息表的创建和输出. 2.基于顺序存储结构的图书信息表的新图书的入库. ...
- 基于Python的数据结构实验——顺序表与单链表建立与操作(附详细代码和注释)
1.创建一个名为 prac02_01.py 的文件,在其中编写一个顺序表的类,该类必须包含顺 序表的定义及基本操作,并通过以下步骤测试基本操作的实现是否正确,给出运行结果. (1)初始化一个顺序表 S ...
- 数据结构与算法笔记(二)—— 顺序表
一.顺序表的形式 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元 ...
- 顺序表查找+折半查找(二级)
我们讲了各种数据 结构之后,比如讲了线性表了,讲了栈和队列,讲了树和二叉树,讲了图之后呢,我们最后还有两个专题,一个叫查找,一个叫排序,我们先看看查找,查找包括哪些内容啊,第一个线性表的查找,数组或者 ...
- 算法与数据结构(part4)--顺序表
学习笔记,仅供参考,有错必纠 文章目录 算法与数据结构–基于python 顺序表 什么是线性表 什么是顺序表 顺序表的基本形式 顺序表的结构与实现 顺序表的结构 顺序表的两种基本实现方式 扩容策略 顺 ...
- 线性表、顺序表以及ArrayList、Iterable、Collection、List中重要的方法
线性表基本概念 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串 线性表在逻辑上是线性结构 ...
- 8.基本数据结构-顺序表和链表
一.内存 - 计算机的作用:对数据进行存储和运算.首先我们需要知道我们目前使用的计算机都是二进制的计算机,就以为着计算机只可以存储和运算二进制的数据.例如下载好的一部电影,该电影可以存储到计算机中,计 ...
- 线性表的顺序存储结构之顺序表类的实现_Java
在上一篇博文--线性表接口的实现_Java中,我们实现了线性表的接口,今天让我们来实现线性表的顺序存储结构--顺序表类. 首先让我们来看下顺序表的定义: 线性表的顺序存储是用一组连续的内存单元依次存放 ...
- 数据结构顺序表基本流程
生活中很多事物是有顺序关系的,如班级座位从前到后是按排的顺序,从左到右是按列的顺序,可以很方便的定位到某一个位置,但如果座位是散乱的,就很难定位. 在程序中,经常需要将一组(通常是同为某个类型的)数据 ...
最新文章
- malloc一次性最大能申请多大内存空间
- 《Fabric 云存储的电子健康病历系统》(2)病历结构体 Records
- MySql项目中使用的小窍门
- react的一些思考
- java虚拟机栈基本内容
- LaTeX常见文件类型
- Git——单人操作及多人协同操作
- Skype For Asterisk 的安装及使用
- 6月8日云栖精选夜读:mac下eclipse配置tomcat无法启动问题
- 全频音箱与分频音箱各有什么优缺点
- 【luogu3372】线段树 1 模板
- 弎问笔录30 之 狐狸和兔子(二)
- DIGITS使用步骤
- Android MTP 模式 驱动无法安装解决方案
- ERP管理web后台_数字化、Axure高保真智能化工厂管理系统原型(erp生产管理、仓库管理、采购管理、设备能源管理、计划管理)
- 计算机重新启动后打印机脱机,重新启动计算机后打印机脱机怎么办
- 微信小程序中 三元表达式
- (转)创业靠撸不靠抽
- Tekton笔记(三)之catalog kaniko
- 吉利车机安装第三方软件教程,手机修改dns完整操作教程