当前位置: 首页 > news >正文

线性表的接口

线性表的实现方式

顺序表

顺序表是一种线性表的实现方式,它是用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素在物理上也相邻²³⁴。顺序表可以用数组来实现,它的优点是可以快速定位第几个元素,但是缺点是需要预先分配固定大小的空间,插入和删除操作需要移动大量元素¹⁵。顺序表在使用前需要初始化,初始化时需要确定起始位置、存储容量和长度

源: 2023/3/6(1) 数据结构与算法——顺序表的实现及原理 - 索智源 - 博客园. https://www.cnblogs.com/CooCoChoco/p/13150200.html 访问时间 2023/3/6.
(2) 顺序表_百度百科. https://baike.baidu.com/item/%E9%A1%BA%E5%BA%8F%E8%A1%A8/9664274 访问时间 2023/3/6.
(3) 顺序表详解(C语言版)_c语言顺序表_红心火柴的博客-CSDN博客. https://blog.csdn.net/qq_44075108/article/details/108837950 访问时间 2023/3/6.
(4) 数据结构与算法——顺序表的实现及原理 - 索智源 - 博客园. https://www.cnblogs.com/CooCoChoco/p/13150200.html 访问时间 2023/3/6.
(5) 【数据结构入门】顺序表(SeqList)详解(初始化、增、删、查、改)_CodeWinter的博客-CSDN博客. https://blog.csdn.net/weixin_48025315/article/details/119778068 访问时间 2023/3/6.

练习

自定义一个IList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _01_LinearList
{interface IListDS<T>{int GetLength();void Clear();bool IsEmpty();void Add(T item);void Insert(T item, int index);T Delete(int index);T this[int index] { get; }//取表的元素T GetEle(int index);//定义一个索引器,获取元素int Locate(T value);//按值查找}
}

定义SeqList实现IList

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _01_LinearList
{class SeqList<T> : IListDS<T>{private T[] data;//用来存储数据private int count = 0;//表示存了多少个数据public T this[int index] =>GetEle(index);public SeqList(int size)//size就是最大容量{data = new T[size];count = 0;}public SeqList():this(10)//默认构造函数容量是10{}/// <summary>/// 添加值/// </summary>/// <param name="item"></param>public void Add(T item){if (count==data.Length)//当前数组已经存满{Console.WriteLine("当前顺序表已经存满,不允许再存入");}else{data[count] = item;count++;}}/// <summary>/// 清空/// </summary>public void Clear(){count = 0;}/// <summary>/// 删除元素/// </summary>/// <param name="index"></param>/// <returns></returns>public T Delete(int index){T temp = data[index];for (int i = index+1   ; i < count; i++){data[i - 1] = data[i];}count--;return temp;}/// <summary>/// 取元素/// </summary>/// <param name="index"></param>/// <returns></returns>public T GetEle(int index){if (index>=0&&index<=count-1)//索引存在{return data[index];}else{Console.WriteLine("索引不存在");return default(T);            }}/// <summary>/// 取得数据的个数/// </summary>/// <returns></returns>public int GetLength(){return count;}/// <summary>/// 插入元素/// </summary>/// <param name="item"></param>/// <param name="index"></param>public void Insert(T item, int index){for (int i = count-1 ; i >= index; i--){data[i + 1] = data[i];}data[index] = item;count++;}public bool IsEmpty(){return count == 0;}/// <summary>/// 按值查找/// </summary>/// <param name="value"></param>/// <returns></returns>public int Locate(T value){for (int i = 0; i < count; i++){if (data[i].Equals(value)){return i;}}return -1;}}
}

SeqList类(实现IListDS)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace _01_LinearList
{class SeqList<T> : IListDS<T>{private T[] data;//用来存储数据private int count = 0;//表示存了多少个数据public T this[int index] =>GetEle(index);public SeqList(int size)//size就是最大容量{data = new T[size];count = 0;}public SeqList():this(10)//默认构造函数容量是10{}/// <summary>/// 添加值/// </summary>/// <param name="item"></param>public void Add(T item){if (count==data.Length)//当前数组已经存满{Console.WriteLine("当前顺序表已经存满,不允许再存入");}else{data[count] = item;count++;}}/// <summary>/// 清空/// </summary>public void Clear(){count = 0;}/// <summary>/// 删除元素/// </summary>/// <param name="index"></param>/// <returns></returns>public T Delete(int index){T temp = data[index];for (int i = index+1   ; i < count; i++){data[i - 1] = data[i];}count--;return temp;}/// <summary>/// 取元素/// </summary>/// <param name="index"></param>/// <returns></returns>public T GetEle(int index){if (index>=0&&index<=count-1)//索引存在{return data[index];}else{Console.WriteLine("索引不存在");return default(T);            }}/// <summary>/// 取得数据的个数/// </summary>/// <returns></returns>public int GetLength(){return count;}/// <summary>/// 插入元素/// </summary>/// <param name="item"></param>/// <param name="index"></param>public void Insert(T item, int index){for (int i = count-1 ; i >= index; i--){data[i + 1] = data[i];}data[index] = item;count++;}public bool IsEmpty(){return count == 0;}/// <summary>/// 按值查找/// </summary>/// <param name="value"></param>/// <returns></returns>public int Locate(T value){for (int i = 0; i < count; i++){if (data[i].Equals(value)){return i;}}return -1;}}
}

相关文章:

线性表的接口

线性表的实现方式 顺序表 顺序表是一种线性表的实现方式&#xff0c;它是用一组地址连续的存储单元依次存储线性表中的数据元素&#xff0c;使得逻辑上相邻的元素在物理上也相邻⁴。顺序表可以用数组来实现&#xff0c;它的优点是可以快速定位第几个元素&#xff0c;但是缺点…...

spark三种操作模式的不同点分析

通常情况下,由于mapreduce计算引擎的效率问题,大部分公司使用的基本都是hive数仓spark计算引擎的方式搭建集群,所以对于spark的三种操作方式来进行简单的分析。在日常开发中&#xff0c;使用最多的方式取决于具体的需求和场景。以下是每种方式的一些常见用途&#xff1a;Spark …...

Vue3做出B站【bilibili】 Vue3+TypeScript【快速入门一篇文章精通系列(一)前端项目案例】

本项目分为二部分 1、后台管理系统&#xff08;用户管理&#xff0c;角色管理&#xff0c;视频管理等&#xff09; 2、客户端&#xff08;登录注册、发布视频&#xff09; Vue3做出B站【bilibili】 Vue3TypeScript【快速入门一篇文章精通系列&#xff08;一&#xff09;前端项目…...

猜数游戏--课后程序(Python程序开发案例教程-黑马程序员编著-第3章-课后作业)

实例10&#xff1a;猜数游戏 猜数游戏是一个古老的密码破译类、益智类小游戏&#xff0c;通常由两个人参与&#xff0c;一个人设置一个数字&#xff0c;一个人猜数字&#xff0c;当猜数字的人说出一个数字&#xff0c;由出数字的人告知是否猜中&#xff1a;若猜测的数字大于设…...

Nvidia jetson nano 部署yolov5_技术文档

Nvidia jetson nano 部署yolov5_技术文档 每天一句小姜格言&#xff1a;我行&#xff0c;我不是一般人儿 部署开始&#xff1a; 1、通过FileZilla&#xff0c;将window文件传输至jetson nano 上的nano文件夹下。 2、查看cuda 我买的jetson nano是带有配置好的镜像。系统配置…...

获取当前天数前N天

获取当前天数前N天 先封装到js里面 export const isTime (val) > {// 1.获取当前时间年月日时分秒格式xxxx-xx-xx xx:xx:xxvar myDate new Date() // 当前时间var y myDate.getFullYear() // 当前年份四位数var m myDate.getMonth() 1 < 10? 0 (myDate.getMont…...

Linux---基本指令

专栏&#xff1a;Linux 个人主页&#xff1a;HaiFan. 基本指令ls 指令pwd命令cd 指令touch指令mkdir指令&#xff08;重要&#xff09;rmdir指令 && rm 指令&#xff08;重要&#xff09;man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令…...

【UE4 RTS游戏】02-摄像机运动_完成摄像机在X轴上运动的相关步骤

效果通过控制键盘WS键使得“CameraPawn”进行前后移动步骤将landscape的Z轴位置更改为0删除“PostProcessVolume”将“LightmassImportanceVolume”移入Lighting文件夹内新建一个蓝图类&#xff0c;父类是Pawn&#xff0c;命名为“CameraPawn”将“MyController”重命名为“Cam…...

Kubernetes学习(五)持久化存储

Volume 卷 容器中的文件在磁盘上是临时存放的&#xff0c;这给容器中运行的特殊应用带来了一些问题。首先&#xff0c;当容器崩溃时&#xff0c;kubectl将重新启动容器&#xff0c;容器中的文件将会丢失--应为容器会以干净的状态重建。其次&#xff0c;当在一个Pod中运行多个容…...

下一个7年,保持期待、持续思考,酷雷曼继续向前!

过去7年&#xff0c;我们一直在思考&#xff0c; VR技术究竟能为我们的生活带来什么&#xff1f; 是足不出户就能云游千里的秀美风光&#xff1f; 是在家就能沉浸式体验线上消费的便利&#xff1f; 还是为商企和用户搭建更快速的沟通桥梁&#xff1f; NO.1、技术变革 在信…...

天梯赛训练L1-010--L1-012

目录 1、L1-010 比较大小 2、L1-011 A-B 3、L1-012 计算指数 4&#xff0c;一些题外话 1、L1-010 比较大小 分数 10 本题要求将输入的任意3个整数从小到大输出。 输入格式&#xff1a; 输入在一行中给出3个整数&#xff0c;其间以空格分隔。 输出格式&#xff1a; 在一…...

三分钟完成Stable Diffusion本地安装(零基础体验AI绘画)

三分钟完成Stable Diffusion本地安装前言安装步骤下载链接前言 最近AI绘画很火&#xff0c;很多无编程基础的小伙伴也想体验一下&#xff0c;所以写这篇博客来帮助小伙伴们愉快的体验一下~废话少说&#xff0c;我们直接开整&#xff01; 安装步骤 首先&#xff0c;下载本项目的…...

电子台账:教程目录及软件下载

前面内容有点杂乱&#xff0c;这里整理一下教程目录。重点是制作模板&#xff0c;企业只要学会适合自己的一种就行。如果这些模板都学会做了&#xff0c;那可以当老师了。1 目录1 模板制作之一——列过滤&#xff08;水平过滤&#xff09;2 模板制作之二——行过滤&#xff08;…...

多态的优势和弊端

目录 1.多态的优势 2.多态的弊端是什么&#xff1f; 3.引用数据类型的类型&#xff0c;转换有几种方式 4.强制类型转换能解决什么问题楠&#xff1f; 1.多态的优势 方法中&#xff0c;使用父类作为参数&#xff0c;可以接收所有子类的对象 package ploydemo3;import java.u…...

android h5考勤管理系统myeclipse开发mysql数据库编程服务端java计算机程序设计

一、源码特点 android h5考勤管理系统是一套完善的WEBandroid设计系统&#xff0c;对理解JSP java&#xff0c;安卓app编程开发语言有帮助&#xff08;系统采用web服务端APP端 综合模式进行设计开发&#xff09;&#xff0c;系统具有完整的源代 码和数据库&#xff0c;系统主…...

第二道pwn题:shellcode

题目来自视频&#xff1a;链接&#xff1a;https://pan.baidu.com/s/17vX9dbfHkXBw71mcEXBgNQ?pwd6666 提取码&#xff1a;6666查看文件类型和保护&#xff0c;虽然现在的我还没有明白太多的保护。64位&#xff0c;放到ida里边rbp:保存的是栈中当前执行函数的基本地址。当前执…...

《华为数据之道》读书笔记

《华为数据之道》读书笔记第二章&#xff1a;2.2.1 管理总纲有四点&#xff1a;信息架构管理原则、数据产生管理、数据应用管理原则、数据问责与奖惩管理原则2.1.2 信息架构管理政策&#xff1a;管理信息架构的角色与职责&#xff1a;公司数据Owner、各数据Owner、数据管理专业…...

C++源码pcl1.13.0库编译环境搭建及配置

Pcl github库https://github.com/PointCloudLibrary/pcl官网地址https://pointclouds.org/Pcl exe的下载地址&#xff0c;各个版本&#xff0c;以及各版本对应的源码https://github.com/PointCloudLibrary/pcl/releases源码需要编译&#xff0c;编译之前安装AllInOne的exe程序&…...

Idea工具单工程使用卡顿设置

一、开启Idea内存占比指示 1.1、勾选Idea 内存指示器 1.2、右下角展示当前项目&#xff1a;内存/总内存&#xff08;726/1024MB&#xff09; ​​​​​​​ 二、修改Idea自定义内存 2.1、打开help - Edit Custom VM Options 2.2、自定义虚拟内存设置 -Xms1024m // 初始内存分…...

Android 9.0 Camera2退出时屏幕旋转为横屏

1.概述 在9.0的系统rom定制化中,由于是大屏幕产品,所以系统屏幕是默认横屏的,但是在Camera2是竖屏的app,所以会在进入Camera2相机时变成竖屏,退出相机时,还是竖屏, 对于横屏的机器来说不太符合要求,所以要求在退出相机时,旋转为横屏,这就需要知道哪个api监听Camera2 退…...

测试微信模版消息推送

进入“开发接口管理”--“公众平台测试账号”&#xff0c;无需申请公众账号、可在测试账号中体验并测试微信公众平台所有高级接口。 获取access_token: 自定义模版消息&#xff1a; 关注测试号&#xff1a;扫二维码关注测试号。 发送模版消息&#xff1a; import requests da…...

大数据学习栈记——Neo4j的安装与使用

本文介绍图数据库Neofj的安装与使用&#xff0c;操作系统&#xff1a;Ubuntu24.04&#xff0c;Neofj版本&#xff1a;2025.04.0。 Apt安装 Neofj可以进行官网安装&#xff1a;Neo4j Deployment Center - Graph Database & Analytics 我这里安装是添加软件源的方法 最新版…...

【Linux】C语言执行shell指令

在C语言中执行Shell指令 在C语言中&#xff0c;有几种方法可以执行Shell指令&#xff1a; 1. 使用system()函数 这是最简单的方法&#xff0c;包含在stdlib.h头文件中&#xff1a; #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...

LLMs 系列实操科普(1)

写在前面&#xff1a; 本期内容我们继续 Andrej Karpathy 的《How I use LLMs》讲座内容&#xff0c;原视频时长 ~130 分钟&#xff0c;以实操演示主流的一些 LLMs 的使用&#xff0c;由于涉及到实操&#xff0c;实际上并不适合以文字整理&#xff0c;但还是决定尽量整理一份笔…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...

uniapp 实现腾讯云IM群文件上传下载功能

UniApp 集成腾讯云IM实现群文件上传下载功能全攻略 一、功能背景与技术选型 在团队协作场景中&#xff0c;群文件共享是核心需求之一。本文将介绍如何基于腾讯云IMCOS&#xff0c;在uniapp中实现&#xff1a; 群内文件上传/下载文件元数据管理下载进度追踪跨平台文件预览 二…...

Ubuntu系统复制(U盘-电脑硬盘)

所需环境 电脑自带硬盘&#xff1a;1块 (1T) U盘1&#xff1a;Ubuntu系统引导盘&#xff08;用于“U盘2”复制到“电脑自带硬盘”&#xff09; U盘2&#xff1a;Ubuntu系统盘&#xff08;1T&#xff0c;用于被复制&#xff09; &#xff01;&#xff01;&#xff01;建议“电脑…...