数据结构-线性表-顺序表(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++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
随机推荐
- [转]-- ISP(图像信号处理)算法概述、工作原理、架构、处理流程
目录 ISP的主要内部构成: ISP内部包含 CPU.SUP IP(各种功能模块的通称).IF 等设备 ISP的控制结构:1.ISP逻辑 2.运行在其上的firmware ISP上的Firmware包 ...
- docker安装8版本elasticsearch遇到的问题FileSystemException
docker安装8版本elasticsearch遇到的问题 Exception in thread "main" java.nio.file.FileSystemException ...
- 《HelloGitHub》第 88 期
兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣.入门级的开源项目. https://github.com/521xueweiha ...
- RAT蓝队自动化测试框架
RAT蓝队自动化测试框架 介绍 RAT 是根据 MITRE ATT&CK 战术矩阵测试蓝队检测能力的脚本框架,由 python2.7 编写,共有 50 多种不同 ATT&CK 技术点和 ...
- [ABC149E] Handshake
2023-03-06 题目 题目传送门 翻译 翻译 难度&重要性(1~10):4 题目来源 AtCoder 题目算法 二分 解题思路 因为按照贡献从大到小握手一定是最优的,所以将 \(a\) ...
- .NET周刊【8月第3期 2023-08-20】
国内主题 抓的是周树人,与我鲁迅有什么关系? https://www.cnblogs.com/JulianHuang/p/17642511.html 问题:作者看到了一个关于Dictionary.Cl ...
- 9k+ Star 简洁好用的开源 Linux 运维管理面板
如果你的公司需要进行服务器运维管理,那么运维管理面板就是一个不可或缺的需求.因为并非每一位运维工程师都能在命令行下游刃有余,不需要借助辅助工具就能确保服务器安全.流畅运行.尤其是对于刚刚踏入运维领域的 ...
- numpy 中的nan和常用的统计方法
- JDK8升级JDK11最全实践干货来了
1.前言 截至目前(2023年),Java8发布至今已有9年,2018年9月25日,Oracle发布了Java11,这是Java8之后的首个LTS版本.那么从JDK8到JDK11,到底带来了哪些特性呢 ...
- Solution -「CF 959E」Mahmoud and Ehab and the xor-MST
Description Link. 一完全图有 \(n\) 个节点 \(0,...,n-1\),其中边 \((i,j)\) 的权值为 \(i\oplus j\),其中 \(\oplus\) 为位异或操 ...