自定义线性接口
using System;
namespace LeanCsharp
{
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);
}
}
线性表实现类
using System;
namespace LeanCsharp
{
public class SeqList<T> : IListDS<T>
{
private T[] data;
private int count = 0;
public SeqList(int size)
{
data = new T[size];
count = 0;
}
public SeqList() : this(10) //默认构造函数 容量是10
{
}
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 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;
namespace LeanCsharp
{
class Program
{
static void Main(string[] args)
{
SeqList<string> seqList = new SeqList<string>();
seqList.Add("123");
seqList.Add("345");
Console.WriteLine(seqList.Locate("123"));
seqList.Insert("111", 1);
}
}
}