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); //Открываем поток на чтение. Fish[] fish = new Fish[1000]; //Создаем 1000 экземпляров класса рыб. Bird[] bird = new Bird[1000]; //Создаем 1000 экземпляров класса птиц. Fish_Stack FStack = new Fish_Stack(); //Создаем стек рыб. Bird_Stack BStack = new Bird_Stack(); //Создаем стек птиц. int indexOfFish = 0; //Индекс для рыб. int indexOfBird = 0; //Индекс для птиц. while ((tempLine = RFile.ReadLine()) != null) { //Считываем файл до конца. if (tempLine.Length == 1 && Char.IsDigit(tempLine, 0) == true) //Ищем строку с типом животного (рыба/птица) { if (tempLine == "1") //Если рыба, то { fish[indexOfFish] = new Fish(); //Создаем объект рыба. fish[indexOfFish].Read(RFile); //Считываем данные в рыбу =). FStack.Add(fish[indexOfFish]); //Добавляем объект в стек рыб. indexOfFish++; //Увеличиваем индекс, чтобы перейти к следующей рыбе. } if (tempLine == "2") //Если птица, то { bird[indexOfBird] = new Bird(); //Создаем объект птица. bird[indexOfBird].Read(RFile); //Считываем данные в птицу =). BStack.Add(bird[indexOfBird]); //Добавляем объект в стек птиц. indexOfBird++; //Увеличиваем индекс, чтобы перейти к следующей птице. } } } FStack.Print(WFile); //Поток со стека рыб записываем в файл. BStack.Print(WFile); //Поток со стека птиц записываем в файл. RFile.Close(); //Закрываем поток чтения. WFile.Close(); //Закрываем потом записи. }
Node top; //Первый узел. #endregion Fields #region Methods //Метод добавления нового узла. public void Add(Bird value) { Node tmp = new Node(); tmp.data = value; tmp.next = top; top = tmp; }