SeqList.h

#ifndef SEQLIST_H_
#define SEQLIST_H_
#include<iostream>
const int Max=100;
template<class T>
class SeqList{
private:
T data[Max];
int Length;
public:
SeqList(){Length=0;}
SeqList(T a[],int len);
int GetLength()const;
void Print()const;
void Insert(T n,int i);
void Delete(int i);
int locate(int x);
T Get(int i);
void sort();
};
template<class T>
SeqList<T>::SeqList(T a[],int len)
{
if(len>Max)throw"超过最大值";
for(int i=0;i<len;i++)
{
data[i]=a[i];
}
Length=len;
}
template<class T>
int SeqList<T>::GetLength()const
{
return Length;
}
template<class T>
void SeqList<T>::Print()const
{
int i;
for(i=0;i<Length;i++)
{
std::cout<<data[i]<<" ";
if(i%5==4)
std::cout<<std::endl;
}
if(i%5!=0)
std::cout<<std::endl;
}
template<class T>
void SeqList<T>::Insert(T n,int i)
{
if(Length>=Max)throw"列表已经满了,无法插入!";
if(i<0||i>Length)throw"插入位置不正确!";
for(int len=Length-1;len>=i-1;len--)
{
data[len+1]=data[len];
}
data[i-1]=n;
data[Length+1]='\0';
Length++;
}
template<class T>
void SeqList<T>::Delete(int i)
{
if(Length<=0)throw"列表为空,无法删除!";
if(i<0||i>Length)throw"删除位置不正确!";
for(int len=i-1;len<Length;len++)
{
data[len]=data[len+1];
}
data[Length-1]='\0';
Length--;
}
template<class T>
int SeqList<T>::locate(int x)
{
if(Length<=0)throw"列表为空,无法查找";
for(int i=0;i<Length;i++)
{
if(data[i]==x)return i+1;
}
return -1;
}
template<class T>
T SeqList<T>::Get(int i)
{
if(Length<=0)throw"列表为空,无法查找";
if(i<0||i>Length)throw"查找位置不正确!";
return data[i-1];
}
template<class T>
void SeqList<T>::sort()
{
if(Length<=0)throw"列表为空,无法排序";
for(int i=0;i<Length;i++)
for(int j=0;j<Length-1-i;j++)
{
if(data[j]>data[j+1])
{
data[j]^=data[j+1];
data[j+1]^=data[j];
data[j]^=data[j+1];
}
}
}
#endif // SEQLIST_H_

SeqList.cpp

#include<iostream>
#include"SeqList.h"
#include<cstring>
int main()
{
using std::cout;
using std::cin;
using std::endl;
int s[10]={9,3,2,4,1,6,0,5,7,8};
SeqList<int> grade(s,10);
cout<<"数组长度为:"<<grade.GetLength()<<endl;
cout<<"数组为:"<<endl;
grade.Print();
grade.Insert(10,2);
cout<<"插入后:"<<endl;
grade.Print();
cout<<"0的位置:";
cout<<grade.locate(0)<<endl;
cout<<"删除0(8的位置)后:"<<endl;
grade.Delete(8);
grade.Print();
cout<<"排序后:"<<endl;
grade.sort();
grade.Print();
cout<<"第10位置值:"<<grade.Get(10)<<endl;
cout<<"数组长度为:"<<grade.GetLength()<<endl;
}

数据结构-线性表-顺序表(c++)的更多相关文章

  1. 【数据结构】线性表&&顺序表详解和代码实例

    喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...

  2. 【数据结构】之顺序表(C语言描述)

    顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...

  3. C语言 线性表 顺序表结构 实现

    一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...

  4. C++ 数据结构学习一(顺序表)

    //SequentialList.h 顺序表模板类 #ifndef SEQUENTIAL_LIST_HXX#define SEQUENTIAL_LIST_HXX using std::cout; us ...

  5. C++数据结构学习之顺序表

    顺序表是数据结构中最基本也是应用相当广泛的一种数据结构类型.它通常包含三个私有成分,即指向数据数组的头指针.当前表长以及表的实际容量.表的头指针通常指向数据数组的基地址,通过数组的形式进行访问数据数组 ...

  6. 数据结构——Java实现顺序表

    一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...

  7. JAVA实现具有迭代器的线性表(顺序表)

    1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator&l ...

  8. 数据结构之动态顺序表(C实现)

    线性表有2种,分为顺序表和链表. 顺序表: 采用顺序存储方式,在一组地址连续的存储空间上存储数据元素的线性表(长度固定) 链表: 有3种,单链表.双向链表.循环链表(长度不固定) seqList.h ...

  9. 【数据结构】之顺序表(Java语言描述)

    之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...

  10. 线性表——顺序表的实现与讲解(C++描述)

    线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...

随机推荐

  1. 1.简述Hibernate的工作原理。

    (1).首先,Configuration读取Hibernate的配置文件和映射文件中的信息,即加载配置文件和映射文件,并通过Hibernate配置文件生成一个多线程的SessionFactory对象: ...

  2. 【博客索引】Welcome!!

    欢迎来到 Daniel_yzy 的博客园 个人简介 初二,男,就读于长沙市一中双语实验学校. 爱好 OI,一生讨厌文化课. 当然,也是唯物主义无神论者. 已有 npy,要问是谁的话可以私下问. 博客索 ...

  3. python移动文件

    #移动文件(目录) shutil.move("oldpos","newpos") shutil.move("D:/知乎日报/latest/一张优惠券, ...

  4. vlunhub笔记(一)deathnote

    (一)查询靶机ip 通过 arp-scan -l 查询目标靶机ip,查询结果如下图红框所示. (二)信息收集 直接访问目标ip,发现无法访问,只返回网站域名. 网站返回域名,就将该域名添加进hosts ...

  5. tensorflow.js 多分类,机器学习区分企鹅种类

    前言: 在规则编码中,我们常常会遇到需要通过多种区间判断某种物品分类.比如二手物品的定价,尽管不是新品没有 SKU 但是基本的参数是少不了.想通过成色来区分某种物品,其实主要是确定一些参数.然后根据参 ...

  6. 如何实现Excel中的多级数据联动

    摘要:本文由葡萄城技术团队于博客园原创并首发.转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 前言 在类Excel表格应用中,常用的需求场景是根据单元格之间 ...

  7. 【pytorch】目标检测:YOLO的基本原理与YOLO系列的网络结构

    利用深度学习进行目标检测的算法可分为两类:two-stage和one-stage.two-stage类的算法,是基于Region Proposal的,它包括R-CNN,Fast R-CNN, Fast ...

  8. 《Web安全基础》01. 基础知识

    @ 目录 1:概念名词 1.1:域名 1.2:DNS 1.3:网站开发语言 1.4:后门 1.5:Web 1.6:Web 相关安全漏洞 2:数据包 2.1:HTTP 2.2:HTTPS 2.3:请求数 ...

  9. GrapeCity Documents V6.0 Update 2发布,新增支持SpreadJS的.sjs文件格式

    近日,GrapeCity Documents 正式迎来其V6.2 的发布更新,能够支持 SpreadJS 中 .sjs 类型的文件.这一重大更新将为用户带来更多地惊喜. .sjs文件有两个关键优势:空 ...

  10. selenium-wire兼容selenium和requests

    背景 在工作中UI自动化中可能会需要用到API来做一些数据准备或清理的事情,那UI操作是略低效的,但API操作相对高效. 而实战课就有这样一个案例,不过那个案例是UI操作和API分开的. 极少会遇到这 ...