C#数据结构与算法之构造线性表的类有哪些呢?C#数据结构与算法之构造线性表的类是如何使用的呢?
让我们来看看C#数据结构与算法之构造线性表的类的代码使用:
- 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);
- string Locate(T value);
- }
- public class TList﹤T﹥ : IListDS﹤T﹥
- {
- private T[] _list;
- private int _len;
- private int _lastOne;
- public T this[int length]
- {
- get { return _list[length]; }
- set { _list[length] = value; }
- }
- public int List
- {
- get { return _lastOne; }
- }
- public int Maxsize
- {
- get { return _len; }
- set { _len = value; }
- }
- public TList(int size)
- {
- _list = new T[size];
- _len = size;
- _lastOne = -1;
- }
- public int GetLength()
- {
- return _lastOne + 1;
- }
- public bool IsEmpty()
- {
- if (_lastOne == -1)
- { return true; }
- else
- { return false; }
- }
- public void Clear()
- {
- _lastOne = -1;
- }
- public bool IsFull()
- {
- if (_lastOne == _len - 1)
- { return true; }
- else
- { return false; }
- }
- public void Append(T item)
- {
- if (IsFull())
- {
- throw new ArgumentOutOfRangeException("The list is full!");
- }
- _list[++_lastOne] = item;
- }
- public void Insert(T item, int i)
- {
- if (IsFull())
- {
- throw new ArgumentOutOfRangeException("The list is full!");
- }
- if (i ﹤ 0 || i ﹥ _len)
- {
- throw new ArgumentOutOfRangeException("Position Error!");
- }
- if (i == _lastOne)
- {
- _list[++_lastOne] = item;
- }
- else
- {
- for (int j = i; j ﹤ _len - 1; j++)
- {
- _list[j + 1] = _list[j];
- }
- _list[i] = item;
- }
- ++_lastOne;
- }
- public T Delete(int i)
- {
- T t = default(T);
- if (IsEmpty())
- {
- throw new ArgumentNullException("T", "List is empty!");
- }
- if (i ﹤ 0 || i ﹥ _lastOne)
- {
- throw new ArgumentOutOfRangeException("T", "Position is Error!");
- }
- if (i == _lastOne)
- {
- t = _list[_lastOne - 1];
- }
- else
- {
- t = _list[_lastOne];
- for (int j = i; j ﹤ _lastOne; j++)
- {
- _list[j] = _list[j + 1];
- }
- }
- --_lastOne;
- return t;
- }
- public T GetElem(int i)
- {
- if (IsEmpty())
- {
- throw new ArgumentNullException("T", "List is empty!");
- }
- if (i ﹤ 0 || i ﹥ _len)
- {
- throw new ArgumentOutOfRangeException("Position is Error!");
- }
- return _list[i];
- }
- public string Locate(T value)
- {
- if (IsEmpty())
- {
- throw new ArgumentNullException("T", "List is empty!");
- }
- int i = 0;
- for (i = 0; i ﹤ _len; i++)
- {
- if (value.Equals(_list[i]))
- {
- break;
- }
- }
- if (i ﹥= _len)
- {
- return "-1";
- }
- return i.ToString();
- }
- }
C#数据结构与算法中构造线性表的类之调用线性表的操作:
- TList﹤string﹥ TL = new TList﹤string﹥(5) { };
- TL.Append("A");
- TL.Append("B");
大家多多讨论,有不对的地方请多多指正。
C#数据结构与算法之构造线性表的类方面的内容就向大家介绍到这里,希望对大家学习C#数据结构与算法之构造线性表的类有所帮助。
【编辑推荐】