Списки. Инициализация, добавление элемента в начало и после другого элемента. Удаление элемента - C#
Формулировка задачи:
uses crt; type list= ^item; item=record data: integer; next:list; end; var l:list; procedure print; var t:list; begin new(t); t:=l; while t<>nil do begin write(t^.data,' '); t:=t^.next; end; writeln; end; begin new(l); l^.data:=1; l^.next:=nil; print; readln; end.
Решение задачи: «Списки. Инициализация, добавление элемента в начало и после другого элемента. Удаление элемента»
textual
Листинг программы
public class TList<T> : IList<T>
{
T[] a;
public TList()
{
a = new T[0];
}
public TList(IEnumerable<T> s)
{
a = new T[0];
foreach (T item in s)
Add(item);
}
public T this[int index]
{
get
{
return a[index];
}
set
{
a[index] = value;
}
}
public int IndexOf(T item)
{
for (int i = 0; i < a.Length; i++)
if (this[i].Equals(item))
return i;
return -1;
}
public void Insert(int index, T item)
{
Array.Resize(ref a, a.Length + 1);
for (int i = a.Length - 1; i > index; i--)
a[i] = a[i - 1];
a[index] = item;
}
public void RemoveAt(int index)
{
for (int i = index; i < a.Length - 1; i++)
a[i] = a[i - 1];
Array.Resize(ref a, a.Length - 1);
}
public IEnumerator<T> GetEnumerator()
{
for (int i = 0; i < a.Length; i++)
yield return a[i];
}
IEnumerator IEnumerable.GetEnumerator()
{
return GetEnumerator();
}
public bool IsReadOnly
{
get
{
return false;
}
}
public int Count
{
get
{
return a.Length;
}
}
public bool Remove(T item)
{
int index = IndexOf(item);
if (index == -1)
return false;
RemoveAt(index);
return true;
}
public void CopyTo(T[] array, int arrayIndex)
{
Array.Copy(a, 0, array, arrayIndex, a.Length);
}
public bool Contains(T item)
{
return IndexOf(item) != -1;
}
public void Add(T item)
{
Array.Resize(ref a, a.Length + 1);
a[a.Length - 1] = item;
}
public void Clear()
{
a = new T[0];
}
}