线性表的接口
创始人
2024-05-30 19:33:47
0

线性表的实现方式

顺序表

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

源: 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{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 : IListDS{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{}/// /// 添加值/// /// public void Add(T item){if (count==data.Length)//当前数组已经存满{Console.WriteLine("当前顺序表已经存满,不允许再存入");}else{data[count] = item;count++;}}/// /// 清空/// public void Clear(){count = 0;}/// /// 删除元素/// /// /// 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;}/// /// 取元素/// /// /// public T GetEle(int index){if (index>=0&&index<=count-1)//索引存在{return data[index];}else{Console.WriteLine("索引不存在");return default(T);            }}/// /// 取得数据的个数/// /// public int GetLength(){return count;}/// /// 插入元素/// /// /// 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;}/// /// 按值查找/// /// /// 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 : IListDS{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{}/// /// 添加值/// /// public void Add(T item){if (count==data.Length)//当前数组已经存满{Console.WriteLine("当前顺序表已经存满,不允许再存入");}else{data[count] = item;count++;}}/// /// 清空/// public void Clear(){count = 0;}/// /// 删除元素/// /// /// 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;}/// /// 取元素/// /// /// public T GetEle(int index){if (index>=0&&index<=count-1)//索引存在{return data[index];}else{Console.WriteLine("索引不存在");return default(T);            }}/// /// 取得数据的个数/// /// public int GetLength(){return count;}/// /// 插入元素/// /// /// 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;}/// /// 按值查找/// /// /// public int Locate(T value){for (int i = 0; i < count; i++){if (data[i].Equals(value)){return i;}}return -1;}}
}

相关内容

热门资讯

安卓自己刷系统的软件,揭秘热门... 你有没有想过,你的安卓手机其实可以像换衣服一样,随时换上新的系统?没错,就是那种完全改变手机面貌的感...
cf分不分苹果系统和安卓系统,... 你有没有发现,现在手机市场上,苹果系统和安卓系统就像是一对“欢喜冤家”,总是被拿来比较。这不,最近就...
安卓最新系统版本壁纸,壁纸背后... 亲爱的手机控们,你是否已经迫不及待想要一睹安卓最新系统版本的芳容了呢?没错,今天我要带你一起探索这个...
怎样让安卓系统变成个s系统,轻... 你有没有想过,你的安卓手机能不能也来点个性,变成那个酷炫的S系统呢?别急,今天就来手把手教你,怎样让...
安卓平板如何双系统,打造个性化... 你有没有想过,你的安卓平板可以同时运行两个操作系统呢?没错,就是那种一个平板,两个世界的感觉!今天,...
忠诚卫士安装安卓系统 你有没有想过,你的忠诚卫士手机,是不是也能像电脑一样,装上各种有趣的安卓系统呢?没错,今天就要来给你...
安卓虚拟win系统教程,轻松实... 你有没有想过在安卓手机上也能体验Windows系统的感觉?没错,就是那种熟悉的桌面、任务栏,还有那些...
安卓原生系统谁做的,谁主导了这... 你有没有想过,手机里那个流畅又强大的安卓原生系统,究竟是谁的杰作呢?没错,今天就要揭开这个谜底,让你...
安卓系统小红书多开教程,轻松实... 你是不是也和我一样,对安卓系统的小红书多开功能感兴趣呢?想象一边刷着小红书,一边还能同时看几篇热门笔...
安卓导航怎么强制进系统,安卓导... 你是不是也遇到了这样的烦恼:手机里的安卓导航软件总是跳出来,让你无法专心开车或者导航?别急,今天就来...
手机虚拟安卓系统哪个好,手机虚... 你有没有想过,手机上的虚拟安卓系统就像是一扇通往新世界的门?想象你可以在同一部手机上体验不同的操作系...
安卓系统下载网站视频,轻松获取... 你有没有想过,手机里那些精彩纷呈的视频,其实都是通过安卓系统下载网站得来的?今天,就让我带你一探究竟...
原生安卓系统刷机包 亲爱的手机控们,你是否曾为手机系统的不够流畅而烦恼?或者,你只是想尝试一下原生安卓系统的纯粹魅力?那...
安卓系统自己增加内存,安卓系统... 你知道吗?最近在安卓系统里发现了一个超级实用的功能,那就是它竟然能自己增加内存!是不是听起来有点神奇...
venue11pro装安卓系统... 你有没有想过,你的 Venue 11 Pro 手机装上安卓系统后,会是怎样的一个场景呢?想象原本稳重...
原生安卓车机系统下载,打造智能... 车友们,你是否厌倦了那千篇一律的车载系统?想要给你的爱车换换“口味”?那就跟着我一起探索一下原生安卓...
通用制卡安卓系统版本 你有没有发现,手机里的那些卡片应用越来越智能了?这不,最近我在研究通用制卡安卓系统版本的时候,发现了...
安卓系统最好的省电王,助你续航... 手机电量总是不够用?是不是每次出门前都要检查一下充电宝在不在?别急,今天我要给你介绍一个安卓系统里的...
安卓通话系统变成黑色了,探究原... 最近你的安卓手机通话界面是不是突然变成了黑色?别急,别慌,让我来给你详细解析一下这个现象,让你轻松应...
长沙雨天攻略系统和安卓,畅游雨... 长沙这座美丽的城市,一到雨天就变得特别有味道。但你知道吗,雨天出行可不是件容易事儿,尤其是对于不熟悉...