线性表 C#实现
概念
主要参考C#数据结构一书
代码
线性表接口
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharpDemo
{
public interface ILinearList<T>
{
int GetLength();
void Clear();
bool IsEmpty();
void Append(T item);
void Insert(T item, int i);
void Delete(int i);
T GetElement(int i);
int Locate(T item);
}
}
顺序表
using System;
using System.Collections.Generic;
using System.Text;
namespace CSharpDemo
{
/// <summary>
/// 顺序表实现
/// </summary>
/// <typeparam name="T"></typeparam>
public class SequenceList<T>:ILinearList<T>
{
#region Field and Property
private int maxsize;
private T[] data;
private int last;
public int MaxSize
{
get
{
return this.maxsize;
}
set
{
this.maxsize = value;
}
}
public int Last
{
get
{
return this.last;
}
}
#endregion
public T this[int i]
{
get
{
return data[i];
}
set
{
data[i] = value;
}
}
public SequenceList(int size)
{
this.MaxSize = size;
data = new T[size];
last = -1;
}
#region ILinearList<T> Member
public int GetLength()
{
return last + 1;
}
public void Clear()
{
last = -1;
}
public bool IsEmpty()
{
return last == -1 ? true : false;
}
public void Append(T item)
{
data[++last] = item;
}
public void Insert(T item, int index)
{
for (int i = last; i >= index; i--)
{
data[i + 1] = data[i];
}
data[index] = item;
++last;
}
public void Delete(int index)
{
for (int i = index; i <= last; i++)
{
data[i] = data[i + 1];
}
--last;
}
public T GetElement(int index)
{
if (IsEmpty())
{
return default(T);
}
return data[index];
}
public int Locate(T item)
{
int flag = -1;
for (int i = 0; i <= last; i++)
{
if (item.Equals(data[i]))
{
flag = i;
break;
}
}
return flag;
}
#endregion
public override string ToString()
{
string dataString = string.Empty;
for (int i = 0; i <= last; i++)
{
dataString += data[i] + " ";
}
return dataString;
}
}
}
浙公网安备 33010602011771号