顺序存储结构用一组地址连续的存储单元依次存储线性表的数据元素。把线性表的节点按逻辑顺序依次存放在一组地址连续的存储单元里。通过这种方式存储的线性表简称顺序表。
今天通过学习顺序存储结构理解了LIst<T>list=new List<T>()泛型数据集的存储结构及原理,将类写成泛型类,然后初始化就可以了,而实现顺序存储的是数组。看下面的代码就理解:
interface IListDS<T>
{
int GetLength();
void Clear();
bool IsEmpty();
void Add(T item);
void Insert(T item,int index);
void Delete(int index);
T this[int index] { get; }
T GetEle(int index);
int Locate(T value);
}
class Seques<T> : IListDS<T>
{
private T[] data;
private int count = 0;
public Seques(int size)
{
data = new T[size];
count = 0;
}
public T this[int index] => GetEle(index);
public void Add(T item)
{
if (count==data.Length)
{
Console.WriteLine("当前数据以存满");
}
else
{
data[count]= item;
count++;
}
}
public void Clear()
{
count = 0;
}
public void Delete(int index)
{
for (int i=index+1;i<count;i++)
{
data[i - 1] = data[i];
}
count--;
}
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;
}
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)
{
int a = 0;
for (int i = 0; i < count; i++)
{
if (data[i].Equals(value))
{
a= i;
}
else
{
a= -1;
}
}
return a;
}
}
static void Main(string[] args)
{
//顺序表(Sequence List)
Seques<string> s = new Seques<string>(10);
s.Add("1");
s.Add("3");
s.Add("2");
s.Insert("10",1);
Console.WriteLine(s.GetEle(1));
Console.WriteLine(s[1]);
Console.ReadKey();
}