数据结构-线性表-顺序表(c++)
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++)的更多相关文章
- 【数据结构】线性表&&顺序表详解和代码实例
喜欢的话可以扫码关注我们的公众号哦,更多精彩尽在微信公众号[程序猿声] 01 预备知识 1.0 什么是线性表? 线性表(List)是零个或者多个数据元素的有限序列. 首先它是一个序列.里面的元素是有顺 ...
- 【数据结构】之顺序表(C语言描述)
顺序表是线性表的一种,它将元素存储在一段连续的内存空间中,表中的任意元素都可以通过下标快速的获取到,因此,顺序表适合查询操作频繁的场景,而不适合增删操作频繁的场景. 下面是使用 C语言 编写的顺序表的 ...
- C语言 线性表 顺序表结构 实现
一个能够自动扩容的顺序表 ArrList (GCC编译). #include <stdio.h> #include <stdlib.h> #include <string ...
- C++ 数据结构学习一(顺序表)
//SequentialList.h 顺序表模板类 #ifndef SEQUENTIAL_LIST_HXX#define SEQUENTIAL_LIST_HXX using std::cout; us ...
- C++数据结构学习之顺序表
顺序表是数据结构中最基本也是应用相当广泛的一种数据结构类型.它通常包含三个私有成分,即指向数据数组的头指针.当前表长以及表的实际容量.表的头指针通常指向数据数组的基地址,通过数组的形式进行访问数据数组 ...
- 数据结构——Java实现顺序表
一.分析 什么是顺序表?顺序表是指用一组地址连续的存储单元依次存储各个元素,使得在逻辑结构上相邻的数据元素存储在相邻的物理存储单元中的线性表.一个标准的顺序表需要实现以下基本操作: 1.初始化顺序表 ...
- JAVA实现具有迭代器的线性表(顺序表)
1,先了解下JAVA类库中的迭代器:JAVA提供了两种基本类型的迭代器,分别用两个接口来表示:Iterator<T>,ListIterator<T>.其中,Iterator&l ...
- 数据结构之动态顺序表(C实现)
线性表有2种,分为顺序表和链表. 顺序表: 采用顺序存储方式,在一组地址连续的存储空间上存储数据元素的线性表(长度固定) 链表: 有3种,单链表.双向链表.循环链表(长度不固定) seqList.h ...
- 【数据结构】之顺序表(Java语言描述)
之前总结过使用C语言描述的顺序表数据结构.在C语言类库中没有为我们提供顺序表的数据结构,因此我们需要自己手写,详细的有关顺序表的数据结构描述和C语言代码请见[我的这篇文章]. 在Java语言的JDK中 ...
- 线性表——顺序表的实现与讲解(C++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
随机推荐
- 【MAUI Blazor踩坑日记】5.macOS上的缩放比例
macOS的页面默认比较小,原因貌似是因为符合iPad吧, 这个没啥好说的,看微软文档就可以了https://learn.microsoft.com/zh-cn/dotnet/maui/mac-cat ...
- Python中的弱引用与基础类型支持情况探究
背景 最近有一个业务场景需要用Python自行实现一个简单的LRU cache,不可避免的接触到了弱引用这一概念,这里记录一下. 强引用 Python内存回收由垃圾回收器自动管理,当一个对象的引用计数 ...
- python连接数据库及查询包含中文错误解决方法
使用MySQLdb库来连接数据库 import MySQLdb conn = MySQLdb.connect(host='127.0.0.1', user='root', passwd='', por ...
- TypeScript: 类型别名
类型别名 在 TYPESCRIPT 中,类型别名可以使用 TYPE 关键字来定义.类型别名可以方便地定义一个类型,并为其起一个易于理解的名称,以便在其他地方引用该类型时使用. 示例 type MySt ...
- 绕过网站CDN查找网站真实ip方法大全(持续更新中)
这是一篇全网(无论国内还是国外)最全.最详细.最新.最实用的关于 CDN 网络对抗攻击的文章,渗透测试中若碰到 CDN 类的问题,只需要看这一篇指南即可.我也会在 Github (https://gi ...
- DASCTF 2023 & 0X401七月暑期挑战赛
比赛只出了一道,小菜不是罪过-_- controlflow 这个题动调到底就行 for i in range(40): after_xor[i]=inp[i]^0x401 after_xor[i] + ...
- 9、Mybatis之动态SQL
9.1.环境搭建 9.1.1.创建新module 创建名为mybatis_dynamicSQL的新module,过程参考5.1节 9.1.2.创建Emp实体类 package org.rain.myb ...
- CodeIgniter 视图篇
什么是视图 简单来说,一个视图其实就是一个 Web 页面,或者页面的一部分,像页头.页脚.侧边栏等. 实际上,视图可以很灵活的嵌在另一个视图里,然后这个视图再嵌在另一个视图里,等等, 如果你想使用这种 ...
- git + docker + docker-compose + Jenkins+Linux 自动化构建、部署、测试过程
Jenkins三大概念: Job:即为任务 插件:maven构建项目.git拉取代码.ssh插件 工作空间:任务的存储空间,即为git代码的存储空间 开发者在本地开发,然后提交到 Source Res ...
- SQL Server实例间同步登录用户
SQL Server实例间同步登录用户 问题痛点:由于AlwaysOn和数据库镜像无法同步数据库外实例对象,例如 登录用户.作业.链接服务器等,导致主库切换之后,应用连接不上数据库或者作业不存在导致每 ...