public class SeqList<T> : IListDS<T>
{
int maxsize; T[] data; int last = -1;
public T this[int index] { get => data[index]; set => data[index] = value; }
public int Last => last;
public int MaxSize { get => maxsize; set => maxsize = value; }
public SeqList(int size) { data = new T[size]; maxsize = size; last = -1; }
public int GetLength() => last + 1;
public void Clear() => last = -1;
public bool IsEmpty() => last == -1;
public bool IsFull() => last == maxsize - 1;
public void Append(T item)
{
if (IsFull()) { Console.Write("List is full"); return; }
data[++last] = item;
}
public void Insert(T item, int i) // i 為 1-based 位置
{
if (IsFull()) { Console.Write("List is full"); return; }
if (i < 1 || i > last + 2) { Console.Write("Position error"); return; }
if (i == last + 2) data[last + 1] = item;
else
{
for (int j = last; j >= i - 1; --j) data[j + 1] = data[j];
data[i - 1] = item;
}
++last;
}
public T Delete(int i)
{
T t = default;
if (IsEmpty()) { Console.Write("List empty"); return t; }
if (i < 1 || i > last + 1) { Console.Write("Position error"); return t; }
if (i == last + 1) t = data[last--];
else
{
t = data[i - 1];
for (int j = i; j <= last; j++) data[j] = data[j + 1];
}
--last; return t;
}
public T GetElem(int i)
{
T t = default;
if (IsEmpty()) { Console.Write("List empty"); return t; }
if (i < 1 || i > last + 1) { Console.Write("Position error"); return t; }
return data[i - 1];
}
public int Locate(T value)
{
if (IsEmpty()) { Console.Write("List empty"); return -1; }
for (int i = 0; i <= last; ++i)
if (value.Equals(data[i])) return i;
return -1;
}
}
public interface IListDS<T>
{
int GetLength(); void Clear(); bool IsEmpty(); bool IsFull();
void Append(T item); void Insert(T item, int i); T Delete(int i);
T GetElem(int i); int Locate(T value);
}
建立 SeqList<int>,執行 Append/Insert/Delete/GetElem/Locate 驗證邊界條件與正確性。