数据结构-线性表-顺序表(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++描述)
线性表 引言 新生安排体检,为了 便管理与统一数据,学校特地规定了排队的方式,即按照学号排队,谁在前谁在后,这都是规定好的,所以谁在谁不在,都是非常方便统计的,同学们就像被一条线(学号)联系起来了,这 ...
随机推荐
- TrustZone——(一)
本文内容主要来源于网络,综合了网上的多篇文章,也加入了一些自己的理解,重新组织了文章结构使其便于理解. 主要参考的文章包括: 一篇了解TrustZone TrustZone领域先行者 TrustZon ...
- Mysql基础7-约束
一.约束的基本概念 1.概念:约束是作用于表中字段上的规则,用于限制储存在表中的数据 2.目的:保证数据库中的数据的正确性,有效性和完整性 3.分类 非空约束(not null):限制该字段的数据不能 ...
- 正交实例二(不规则数据的测试:也就是因子数和水平数不是正好满足正交表)allpairs的使用即下载
allpairs工具的使用 作用可以针对不规则的数据生成用例 下载地址: 链接:https://pan.baidu.com/s/1SgvciN427z_WRzA5QG5eJg ** 提取码:52yj* ...
- Java并发篇:6个必备的Java并发面试种子题目
线程创建和生命周期 线程的创建和生命周期涉及到线程的产生.执行和结束过程.让我们继续深入探索这个主题: 线程的创建方式有多种,你可以选择适合你场景的方式: 继承Thread类: 创建一个类,继承自Th ...
- SpringBoot里的Servlet和实现
Servlet 接口,一个规范, SpringBoot Spring Boot 是 Spring 的子项目,正如其名字,提供 Spring 的引导( Boot )的功能. 通过 Spring Boot ...
- Redis从入门到放弃(6):持久化
1.引言 Redis作为一种高性能的内存数据存储系统,常被用作缓存.会话存储.消息队列等多种应用场景.然而,由于其数据存储在内存中,一旦发生意外或服务器重启,数据就会丢失.为了保障数据的持久性和安全性 ...
- [git]记配置本地git到gitlab并推送
前言 gitlab仓库地址:git@192.168.0.12:godev/gohello.git 步骤 # 配置用户 git config --global user.name "zhang ...
- N1nEmAn-2023集训wp
week1 2022-12-28 WP 0x00 T1 reverse3 前几天没注意到要发wp,现在补一下.最近在学汇编,pwn题没做新的了.想到之前了解到hws的pwn会考花指令,听hjx他们说那 ...
- Django模板(请用Django2.0版本完成)
1. 在learn目录下新建一个templates文件夹,里面新建一个home.html (1) 很简单的,就直接右键learn,新建文件夹,完成后,继续右键templates,创建文档,后缀名为ht ...
- ChatGPT赋能低代码开发:打造智能应用的双重引擎
摘要:本文摘自葡萄城低代码产品活字格的资深用户(格友超哥)所撰写的文章:<惊叹表现!活字格+ChatGPT:低代码开发智能应用的巨大潜力>. ChatGPT的functions函数使用方 ...