public static OList AddEndLIST(int l) // Добавление в конец списка { OList beg = new OList(); beg.data = new Worker(); // Первый элемент фундамент OList end = beg; // Переменная end нужна, чтобы ссылка пременной beg не стёрлась из памяти for (int i = 1; i < l; i++) //сколько элементов вставить { OList Node = new OList(); if (i % 2 == 0) { Node.data = new MyClassLibrary10.Worker(); } else if (i % 3 == 0) { Node.data = new MyClassLibrary10.Engneer(); } else { Node.data = new MyClassLibrary10.Employee(); } end.next = Node; end = Node; } beg.count = l;//сколько объектов в списке return(beg); }
public static OList Add(OList list, int n, MyClassLibrary10.Employee G) // Добавление элемента на позицию n { if (list == null) { Console.WriteLine("Список пустой"); return(null); } else { if (list.count < n) { Console.WriteLine("Выход за пределы списка"); return(null); } else { if (n == 1) { OList LinksAfterN = list; list = new OList { data = G, next = LinksAfterN }; list.count += 1; return(list); //OList ListTmp = list; //ListTmp.data = G; } else if (n == list.count) { OList ListTmp = list; for (int i = 1; i < n; i++) { ListTmp = ListTmp.next; } ListTmp.next = new OList { data = G, next = null }; return(list = ListTmp); } else { OList ListTmp = list; // Для запоминания n-го элемента OList LinksAfterN = list; // Для запоминания связей после n-го элемента for (int i = 0; i < n - 1; i++) { ListTmp = ListTmp.next; // Присваиваем ссылку на следующий элемент LinksAfterN = ListTmp.next; // Присваиваем ссылку на элемент, который нужно запомнить } ListTmp.next = new OList { data = G, next = LinksAfterN }; list.count += 1; return(list = ListTmp); } } } }
public static void ShowList(OList list) // Вывод списка { if (list == null) // Проверка на заполненность 1-го узла { Console.WriteLine("Список пустой"); } else { OList tmp = list; while (tmp != null) // Проверка на заполненность узла { tmp.data.PrintInfo(); tmp = tmp.next; // Переход на следующий узел в листе } } }
public static OList AddBeginningLIST(int l) // Добовление в начало однонаправленного списка { OList beg = new OList(); //начало списка beg.data = MakeNew(); //созднание нового элемента for (int i = 1; i < l; i++) { //Console.WriteLine(beg.data.ToString());//это мне для проверки MyClassLibrary10.Employee tmp = new MyClassLibrary10.Employee(); // Данные для OList OList element = new OList(); // Новый узел element.data = tmp; // Заполняем data нового узла element.next = beg; // ссылаемся на предыдущий узел beg = element; // Присваиваем предыдущему узлу ссылку на текущий } beg.count = l; return(beg); }
public static OList Delete2(OList list) // удаление каждого второго объекта { if (list != null && list.next != null) { OList tmp = list; int size = list.count; for (int i = 1; i < size && tmp != null; i = i + 2) { //if (i%2==1) //{ if (tmp.next.next == null) { tmp.next = null; } else { tmp.next = tmp.next.next; list.count -= 1; } //} tmp = tmp.next; //tmp = tmp.next; } return(list); } else { if (list.next == null) { Console.WriteLine("Остался один элемент в списке"); return(null); } else { Console.WriteLine("Список пустой"); return(null); } } }
public OList() { data = null; next = null; count = 0; }
//static void Show(MyCollection<string> My) //{ // foreach (string str in My) // Console.WriteLine(str); //} static void Main(string[] args) { OList olist = null; biList bilist = null; TreeNode root = null; TreeNode searchRoot = null; int choice = 0; MyCollection <Item> collection = null; do { MainMenu(); Input(out choice, 1, 3); switch (choice) { case 1: // 1 Часть { do { SecondMenu(); Input(out choice, 1, 4); switch (choice) { case 1: // Односвязный { do { MenuOList(); Input(out choice, 1, 5); switch (choice) { case 1: // Create and output { int l = 0; olist = new OList(); Console.WriteLine("Введите количество элементов в списке"); olist = OList.AddEndLIST(Natural(out l)); OList.ShowList(olist); } break; case 2: // task { if (olist == null) { Console.WriteLine("Односвязный список не создан"); } else { olist = OList.Delete2(olist); OList.ShowList(olist); } } break; case 3: // Del { if (olist == null) { Console.WriteLine("Односвязный список не создан"); } else { olist = null; Console.WriteLine("Однонаправленный список удалён"); } } break; case 4: { OList.ShowList(olist); } break; } } while (choice != 5); choice = 0; } break; case 2: // Двусвязный { do { MenubiList(); Input(out choice, 1, 4); switch (choice) { case 1: // Create and output { int l = 0; Console.WriteLine("Введите количество элементов в двусвязном списке"); bilist = new biList(); bilist.Create(Natural(out l)); biList.WriteList(bilist); } break; case 2: // task { if (bilist == null) { Console.WriteLine("Двунаправлленный список не создан"); } else { Console.WriteLine("Введите номер вставляемого элемента"); int number = 0; bilist.AddNode(Natural(out number)); biList.WriteList(bilist); } } break; case 3: // Del { if (bilist == null) { Console.WriteLine("Двунаправлленный список не создан"); } else { bilist = null; Console.WriteLine("Двунаправленный список удалён"); } } break; case 4: { OList.ShowList(olist); } break; } } while (choice != 5); choice = 0; } break; case 3: // Дерево { do { MenuTree(); choice = Input(out choice, 1, 5); switch (choice) { case 1: { int l = 0; root = new TreeNode(); Console.WriteLine("Введите размер дерева"); root = TreeNode.IdealTree(Natural(out l), root); TreeNode.ShowTree(root, 3); } break; case 2: { if (root == null) { Console.WriteLine("Дерево не создано"); } else { Console.WriteLine($"Минимальный элемент {TreeNode.SearchMin(root)}"); } } break; case 3: { if (root == null) { Console.WriteLine("Идеально сбалансированное дерево еще не создано. Создание дерева поиска невозможно."); } else { searchRoot = TreeNode.CreateSearchTree(searchRoot, root); TreeNode.ShowTree(searchRoot, 3); } } break; case 4: { if (root == null) { Console.WriteLine("Дерево не создано"); } else { root = null; Console.WriteLine("Дерево удалено"); } } break; } } while (choice != 5); } break; } } while (choice != 4); break; } case 2: // 2 Часть do { MyCollectionMenu(); switch (Input(out choice, 1, 10)) { case 1: // Creat { collection = new MyCollection <Item>(); Console.WriteLine("Хеш-таблица словаря создана"); } break; case 2: // Insert { Console.WriteLine("1. Добавить рандомные элементы(несколько) 2. Добавить определенный элемент(1)"); switch (Input(out choice, 1, 9)) { case 1: //InsertRandom { if (collection == null) { Console.WriteLine("Хеш-таблица не создана "); } else { Console.WriteLine("Введите количество вставляемых элементов"); collection.InsertRandom(int.Parse(Console.ReadLine())); Console.WriteLine("Элемент добавлен"); } } break; case 2: { if (collection == null) { Console.WriteLine("Хеш-таблица не создана "); } else { Console.WriteLine("Введите значение"); Console.WriteLine("Введите имя"); string name = Console.ReadLine(); Console.WriteLine("Введите возраст"); int age = int.Parse(Console.ReadLine()); Console.WriteLine("Введите стаж"); int exp = int.Parse(Console.ReadLine()); Employee one = new Employee(name, age, exp); collection.Insert(one); Console.WriteLine("Элемент добавлен"); } } break; } } break; case 3: // Remove { if (collection == null) { Console.WriteLine("Хеш-таблица не создана"); } else { Console.WriteLine("Введите количество удаляемых элементов"); collection.Delete(int.Parse(Console.ReadLine())); } } break; case 4: // Search { if (collection == null) { Console.WriteLine("Хеш-таблица не создана "); } else { Employee emp = new Employee("Пестова Александра", 19, 1); Item newItem = new Item(emp); if (collection.Search(newItem)) { Console.WriteLine("Элемент найден"); } else { Console.WriteLine("Элемент не найден"); } } } break; case 5: // ref clone { if (collection == null) { Console.WriteLine("Хеш-таблица не создана "); } else { MyCollection <Item> CloneCollection = collection; Console.WriteLine("Коллекция поверхностно скопирована"); Console.WriteLine("Добавим в клон коллекции элемент \"Меня добавили\". Он также появится и в клонируемой коллекции"); Employee one = new Employee("Меня добавили", 1, 1); CloneCollection.Insert(one); MyCollection <Item> .ShowHashTable(CloneCollection, "Клон"); MyCollection <Item> .ShowHashTable(collection, "Основа"); } } break; case 6: // full clone { if (collection == null) { Console.WriteLine("Очередь на базе однонаправленного списка не создана "); } else { MyCollection <Item> Clone = new MyCollection <Item>(); Clone.AllCopy(collection.items, ref Clone.items); Console.WriteLine("Коллекция плностью скопирована"); Console.WriteLine("Добавим в клон коллекции элемент \"Меня добавили\". Он не появится и в клонируемой коллекции"); Employee one = new Employee("Меня добавили", 1, 1); Clone.Insert(one); MyCollection <Item> .ShowHashTable(Clone, "Клон"); MyCollection <Item> .ShowHashTable(collection, "Основа"); } } break; case 7: // del { if (collection == null) { Console.WriteLine("хеш-таблица не создана "); } else { collection.Clear(); Console.WriteLine("Коллекция удалена"); } } break; case 8: //write { MyCollection <Item> .ShowHashTable(collection, "Хеш-таблица"); } break; } } while (choice != 9); break; } } while (choice != 3); }