Beispiel #1
0
        public void Add(Animal value) //Метод добавления нового узла.
        {
            Node tmp = new Node();
            tmp.data = value;
            tmp.next = null;
            tmp.prev = null;

            if (first == null)
            {
                first = tmp;
                last = tmp;
            }
            else
            {
                last.next = tmp;
                tmp.prev = last;
                last = tmp;
            }
        }
Beispiel #2
0
 static void Main(string[] args)
 {
     string input = "input.txt"; //Входной файл.
     string output = "output.txt"; //Входной файл.
     string tempLine = string.Empty; //Строка-буфер.
     StreamReader RFile = new StreamReader(input); //Открываем поток на чтение.
     StreamWriter WFile = new StreamWriter(output); //Открываем поток на чтение.
     Animal[] animal = new Animal[1000]; //Создаем 1000 экземпляров класса животные.
     LinkedList ALinkedList = new LinkedList(); //Создаем двусвязный список с животными.
     int indexOfAnimal = 0; //Индекс животных.
     while ((tempLine = RFile.ReadLine()) != null)
     { //Считываем файл до конца.
         if (tempLine.Length == 1 && Char.IsDigit(tempLine, 0) == true) //Ищем строку с типом животного (рыба/птица)
         {
             if (tempLine == "1") //Если рыба, то
             {
                 animal[indexOfAnimal] = new Fish(); //Создаем объект рыба.
                 animal[indexOfAnimal].Read(RFile); //Считываем данные в рыбу.
                 ALinkedList.Add(animal[indexOfAnimal]); //Ставим рыбу в очередь.
                 indexOfAnimal++; //Увеличиваем индекс.
             }
             if (tempLine == "2") //Если птица, то
             {
                 animal[indexOfAnimal] = new Bird(); //Создаем объект птица.
                 animal[indexOfAnimal].Read(RFile); //Считываем данные в птицу.
                 ALinkedList.Add(animal[indexOfAnimal]); //Ставим птицу в очередь.
                 indexOfAnimal++; //Увеличиваем индекс.
             }
             if (tempLine == "3") //Если зверь, то
             {
                 animal[indexOfAnimal] = new Beast(); //Создаем объект зверь.
                 animal[indexOfAnimal].Read(RFile); //Считываем данные в зверя.
                 ALinkedList.Add(animal[indexOfAnimal]); //Ставим зверя в очередь.
                 indexOfAnimal++; //Увеличиваем индекс.
             }
         }
     }
     ALinkedList.Sort();
     try
     {
         while (true)
         {
             ALinkedList.Pull().Write(WFile); //Записываем список в файл.
         }
     }
     catch (Exception) { };
     RFile.Close(); //Закрываем поток чтения.
     WFile.Close(); //Закрываем потом записи.
 }