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