数据结构-线性表-顺序表(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++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
随机推荐
- Python单元测试之道:从入门到精通的全面指南
在这篇文章中,我们会深入探讨Python单元测试的各个方面,包括它的基本概念.基础知识.实践方法.高级话题,如何在实际项目中进行单元测试,单元测试的最佳实践,以及一些有用的工具和资源 一.单元测试重要 ...
- 二分查找非递归Algorithm(java)
二分查找的适用条件 二分查找只适用于有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找 二分查找的运行时间为对数时间O(LONG2 N) 二分查找非递归的实现 /** * @param ...
- Mysql报错:Specified key was too long; max key length is 767 bytes
1.show variables like 'innodb_large_prefix'; show variables like 'innodb_file_format'; 修改为如下配置: set ...
- 服务端apk打包教程
本文我将给大家介绍一个 apk 打包工具 VasDolly 的使用介绍.原理以及如何在服务端接入 VasDolly 进行服务端打渠道包操作. 使用介绍 VasDolly 是一个快速多渠道打包工具,同时 ...
- Spring Secriuty登录失败错误状态999重定向302
原因是login.html登录页面有不能加载的静态资源,找出来去掉就好了,比如 bootstrap.min.css 环境 使用Spring Boot Security 3做一个登录功能,使用了一个教程 ...
- 文心一言 VS 讯飞星火 VS chatgpt (74)-- 算法导论7.2 2题
二.如果用go语言,当数组A的所有元素都具有相同值时,QUICKSORT的时间复杂度是什么? 文心一言: 在Go语言中,对一个所有元素都相等的数组进行快速排序(QuickSort)的时间复杂度是O(n ...
- Java BigDecimal 分析
1.使用理由: Double类和Float类可以对16位有效数字的数进行精确运算,但对于超过16位有效数字的数,会丢失精度.所以使用BigDecimal类来精确计算超过16位有效数字的数. 2.引入包 ...
- Html+JavaScript实现手写签名
前言 Hello各位,本葡萄又来啦,今天遇到的场景是这样的:在日常业务流程中,经常需要某一流程环节中相关责任人员进行审批签字,早期许多公司为了省事就直接会把这位负责人的签名以键盘打字(楷体)的形式打印 ...
- vivo 容器集群监控系统优化之道
作者:vivo 互联网容器团队 - Han Rucheng 本文介绍了vivo容器团队基于 Prometheus等云原生监控生态来构建的容器集群监控体系,在业务接入容器监控的过程中遇到的挑战.困难,并 ...
- c# .NET 高级编程 高并发必备技巧(二) - 分布式锁
上一篇文章简单的介绍了单机的情况下如何进行加锁,防止高并发带来的问题. 然而现实中,一般会高并发的应用,很少会单机部署.当用户量达到一定的程度,分布式.集群部署是必然的选择.在分布式部署的情况下,之前 ...