Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Threading.Tasks;
- namespace GenericListTest
- {
- class GenericListTest
- {
- static void Main(string[] args)
- {
- //пробвай методите -> .AddElement - добавя елемент на първото свободно място
- // .GetElementByValue - връща елемента ако отговаря на стойността
- // .GetElementByIndex - връща елемента на зададения индекс
- // .DeleteElementByIndex - изтрива елемента на дадения индекс
- // .AddElementAtIndex - добавя елемент на индекс
- // .ClearTheList - изчиства листа и му връща оригиналния размер
- // .ExtractElements - връща масив от елементите който си задал
- // в скобите задаваш оригиналния елемент на листа ако не зададеш автоматично се заделят 12 места
- GenericList<string> test = new GenericList<string>(3);
- test.AddElementAtIndex("Banam", 0);
- test.AddElementAtIndex("kenguru", 0);
- test.AddElementAtIndex("sega sym purvi", 1);
- test.AddElementAtIndex("iskam da sum posleden be", 3);
- test.AddElement("Ne az sym posleden");
- test.DeleteElementByIndex(5);
- foreach (string sentence in test.ExtractElements)
- {
- Console.WriteLine(sentence);
- }
- }
- }
- class GenericList<TElement>
- {
- private TElement[] allElements;
- private int sizeOfList;
- private int originalSizeOfTheList;
- private int currentIndex;
- public GenericList()
- : this (12)
- {
- }
- public GenericList(int sizeOfList)
- {
- this.originalSizeOfTheList = sizeOfList;
- this.sizeOfList = sizeOfList;
- this.currentIndex = 0;
- this.allElements = new TElement[sizeOfList];
- }
- public TElement[] ExtractElements { get { return this.allElements; } }
- public int LenghtOfList { get { return this.allElements.Length; } }
- public void AddElement(TElement element)
- {
- if (currentIndex == allElements.Length)
- {
- TElement[] arrayHolder = new TElement[sizeOfList];
- Array.Copy(allElements, arrayHolder, allElements.Length);
- sizeOfList *= 2;
- allElements = null;
- allElements = new TElement[sizeOfList];
- Array.Copy(arrayHolder, allElements, arrayHolder.Length);
- }
- allElements[currentIndex] = element;
- currentIndex++;
- }
- public TElement GetElementByValue(TElement elementSearched)
- {
- TElement elementToReturn = default(TElement);
- bool foundAnElement = false;
- for (int i = 0; i < allElements.Length; i++)
- {
- if (allElements[i] != null && allElements[i].Equals(elementSearched))
- {
- elementToReturn = elementSearched;
- foundAnElement = true;
- }
- }
- if (foundAnElement)
- {
- return elementToReturn;
- }
- else
- {
- throw new InvalidOperationException("No such element exists!!!");
- }
- }
- public TElement GetElementByIndex(int index)
- {
- if (index >= allElements.Length || index < 0)
- {
- throw new IndexOutOfRangeException("Invalid index entered!!!");
- }
- return allElements[index];
- }
- public void DeleteElementByIndex(int index)
- {
- if (index >= allElements.Length || index < 0)
- {
- throw new IndexOutOfRangeException("Invalid index entered!!!");
- }
- allElements[index] = default(TElement);
- for (int currIndex = index; currIndex < (allElements.Length - 1); currIndex++)
- {
- allElements[currIndex] = allElements[currIndex + 1];
- }
- currentIndex--;
- allElements[currentIndex] = default(TElement);
- }
- public void AddElementAtIndex(TElement element, int index)
- {
- if (index > allElements.Length || index < 0)
- {
- throw new IndexOutOfRangeException("Invalid index entered!!!");
- }
- if (currentIndex == allElements.Length || index == allElements.Length)
- {
- TElement[] arrayHolder = new TElement[sizeOfList];
- Array.Copy(allElements, arrayHolder, allElements.Length);
- sizeOfList *= 2;
- allElements = null;
- allElements = new TElement[sizeOfList];
- Array.Copy(arrayHolder, allElements, arrayHolder.Length);
- }
- for (int i = (allElements.Length - 1); i > index; i--)
- {
- allElements[i] = allElements[i - 1];
- }
- allElements[index] = default(TElement);
- allElements[index] = element;
- currentIndex++;
- }
- public void ClearTheList()
- {
- allElements = null;
- allElements = new TElement[originalSizeOfTheList];
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment