顺序表的基本操作:
public class SeqList
{private int maxsize; //顺序表的最大容量
private int[] data; //数组,用于存储顺序表中的数据元素
private int length; //顺序表的实际长度
//实际长度属性
public int Length
{
get
{
return length;
}
}
//表数据
public int[] Data
{
get
{
return data;
}
}
//最大容量属性
public int Maxsize
{
get
{
return maxsize;
}
set
{
maxsize = value;
}
}
//初始化线性表
public SeqList(int size)
{
maxsize = size;
data = new T[maxsize];
length = 0;
}
//在顺序表的末尾追加数据元素
public void InsertNode(int a)
{
if (IsFull())
{
Console.WriteLine("insert Error");
return;
}
data[length] = a;
length++;
}
//在顺序表的第i个数据元素的位置插入一个数据元素a
public void InsertNode(int a, int i)
{
if (IsFull())
{
Console.WriteLine("List is full");
return;
}
if (i < 1 || i > length + 1)
{
Console.WriteLine("Position is error!");
return;
}
else
{
for (int j = length-1; j >= i - 1; j--)
{
data[j + 1] = data[j];//让第i-1个数据元素后移
}
data[i - 1] = a;//将该元素插入i位置
}
length++;
}
//删除顺序表的第i个数据元素
public void DeleteNode(int i)
{
if (IsEmpty())
{
Console.WriteLine("List is empty");
return;
}
if (i < 1 || i > length)
{
Console.WriteLine("Position is error!");
return;
}
for (int j = i; j <length; j++)
{
data[j-1] = data[j];//让i个元素前移
}
length --;
}
//获得顺序表的第i个数据元素
public int SearchNode(int i)
{
if (IsEmpty() || (i < 1) || (i > length))
{
Console.WriteLine("List is empty or Position is error!");
return default(T);
}
return data[i - 1];
}
//在顺序表中查找值为value的数据元素
public int SearchNode(int value)
{
if (IsEmpty())
{
Console.WriteLine("List is Empty!");
return default(T);
}
int i = 0;
for (i = 0; i <length; i++)
{
if (data[i].ToString().Contains(value.ToString ()))
{
break;
}
}
if (i >=length)
{
return default(T);
}
return data[i];
}
//求顺序表的长度
public int GetLength()
{
return length;
}
//清空顺序表
public void Clear()
{
length=0;
}
//判断顺序表是否为空
public bool IsEmpty()
{
if (length ==0)
{
return true;
}
else
{
return false;
}
}
//判断顺序表是否为满
public bool IsFull()
{
if (length == maxsize)
{
return true;
}
else
{
return false;
}
}
}