Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- namespace ArrayList
- {
- public class ArrayList<Т> : IEnumerable<T>
- {
- //полета: елементи, брой
- private T [] elements;
- private int capacity = 2;
- //конструктор
- public ArrayList()
- {
- elements = new T[capacity];
- }
- //get и set -> по индекс от elements
- public T this[int index]
- {
- get
- {
- if (index >= capacity)
- {
- throw new ArgumentOutOfRangeException();
- }
- return elements[index];
- }
- set
- {
- if (index >= capacity)
- {
- throw new ArgumentOutOfRangeException();
- }
- elements[index] = value;
- }
- }
- public int Capacity
- {
- get
- {
- return capacity;
- }
- set
- {
- capacity = value;
- }
- }
- //свойства
- private void Resize()
- {
- T[] resize = new T[elements.Length * 2];
- //1. прехвърлим всички елементи от elements -> resize
- //2. elements = resize
- for (int index = 0; index < elements.Length; index++)
- {
- resize[index] = elements[index];
- }
- elements = resize;
- }
- private void Shrink()
- {
- T[] resize = new T[elements.Length / 2];
- //1. прехвърлим всички елементи от elements -> resize
- //2. elements = resize
- for (int index = 0; index < elements.Length; index++)
- {
- resize[index] = elements[index];
- }
- elements = resize;
- }
- public void Add(Т element)
- {
- //да нямаме място
- if (elements.Length == Capacity)
- {
- Resize();
- }
- //да имаме свободно място
- this.elements[this.Capacity++] = element;
- }
- public void Shift(int index)
- {
- for (int i = index; i < elements.Length; i++)
- {
- elements[i] = elements[i + 1];
- }
- }
- public T RemoveAt(int index)
- {
- if(index >= elements.Length)
- {
- throw new ArgumentOutOfRangeException();
- }
- T elementToRemove = elements[index];
- Shift(index);
- Capacity--;
- return elementToRemove;
- }
- IEnumerator<T> IEnumerable<T>.GetEnumerator()
- {
- throw new NotImplementedException();
- }
- IEnumerator IEnumerable.GetEnumerator()
- {
- throw new NotImplementedException();
- }
- }
- public class T
- {
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment