Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.10.2010, 00:38   #1
SaikoNS
 
Аватар для SaikoNS
 
Регистрация: 14.03.2010
Сообщений: 6
По умолчанию C# Сортировка линейного списка

язык С# ,делается в Visual Studio 2008
Задача такая: дан линейный односвязный список,значения которого заполняются из файла. Допустим,в файле 20 элементов. Это сделано.
Код:
class Element
    {
        public string value;
        public Element next;
        public Element prev;
        public Element(string kValue)
        {
            value = kValue;
        }
    }


    class Listik
    {
        public Element first, last, current;
        int Count;
        public Listik()
        {
            first = null;
            last = null;
            Count = 0;
            current = null;
        }
        public void Add(Element el)
        {
            if (last != null)
            {
                last.next = el;
                el.prev = last;
            }
            last = el;
            if (first == null) first = current = el;
        }
// функция считывания из файла
        public void readformfile(string filename)
        {
            StreamReader sr = File.OpenText(filename);
            string s;
            try
            {                
                while ((s = sr.ReadLine()) != null)
                {
                    Element ellis;
                    ellis = new Element(s);
                    this.Add(ellis);                    
                }

            }
            catch (IOException)
            {
            }
        }
        
    }
}
Элементы списка сортирую самым простым методом "пузырьковым". И здесь я начинаю тупить,как правильно организовать
Код:
// button Sorting
        private void button2_Click(object sender, EventArgs e)
        {
            string str2 = "";
            int i = 1;
            L.current = L.first;
  //пока след .элемент не пустой создаем новый список из элементов первого списка,для его сортировки
            while (L.current != null)
            {
                Element ellis2;
                ellis2 = new Element(L.current.value);
                LS.Add(ellis2);
 for (i = 20 - 1; i >= 2; i--)
                {
                    bool sorted = true;
// здесь сам процесс сортировки
               for (i = 20 + 1; i <= 19; i++)
                {
                    if (L.current.value < L.current.next.value)
                    {
                        LS.current.value = L.current.value;
                            L.current.value = L.current.next.value;
                            L.current.next.value = LS.current.value;
                            sorted = false;
                    }
                    i += 1;
                    L.current = L.current.next;
                }
                 if (sorted) { break; }
                 while (LS.current != null)
                str2 = str2 + " " + LS.current.value;
                LS.current = LS.current.next;

             }
                textBox2.Text = str2;
             //результат сортировки вводим на экран через компоненту   textBox2
           } }
Ошибки начинаются такие, что :
1) if (L.current.value < L.current.next.value) - Оператор "<" не может применяться к операндам типа "string" и "string" "
2) при использовании функции strcmp для сравнения - ошибка " Элемент "strcmp" не существует в текущем контексте. " какую библиотеку нужно объявить,чтобы "strcmp" начало существовать в текущем контексте?
Пожалуйста,укажите на ошибку)
-Иногда движение вперед является результатом пинка сзади(c)
-Правильно, сначала давайте перекусим, а дружелюбие проявите потом (с)

Последний раз редактировалось SaikoNS; 22.10.2010 в 15:24.
SaikoNS вне форума Ответить с цитированием
Старый 22.10.2010, 02:45   #2
p51x
Старожил
 
Регистрация: 15.02.2010
Сообщений: 15,709
По умолчанию

Цитата:
strcmp
это с/с++

У шарпа есть своё. Откройте мсдн и посмотрите методы класса стринг.
p51x вне форума Ответить с цитированием
Старый 22.10.2010, 13:45   #3
SaikoNS
 
Аватар для SaikoNS
 
Регистрация: 14.03.2010
Сообщений: 6
По умолчанию

метод compare использовать?
а сам алгоритм сортировки у меня хотя бы правильно работает?))
-Иногда движение вперед является результатом пинка сзади(c)
-Правильно, сначала давайте перекусим, а дружелюбие проявите потом (с)
SaikoNS вне форума Ответить с цитированием
Старый 27.10.2010, 14:44   #4
SaikoNS
 
Аватар для SaikoNS
 
Регистрация: 14.03.2010
Сообщений: 6
По умолчанию

вы меня простите пожалуста,но я реально не понимаю как использовать int sor = string.Compare(L.current.value, L.current.next.value); в сортировке пузырьком ?
-Иногда движение вперед является результатом пинка сзади(c)
-Правильно, сначала давайте перекусим, а дружелюбие проявите потом (с)
SaikoNS вне форума Ответить с цитированием
Старый 27.10.2010, 15:12   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
SaikoNS
А обязательно городить свой список?
Не проще ли считать из файла в массив, а потом его же методами отсортировать его?
Все равно у тебя одно поле...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.10.2010, 22:15   #6
SaikoNS
 
Аватар для SaikoNS
 
Регистрация: 14.03.2010
Сообщений: 6
По умолчанию

с массивом, конечно,проще,но нельзя. нужно именно список.
и если список я еще смогла создать и заполнить,то как сортировать (в отличии от массива)я понять не могу
-Иногда движение вперед является результатом пинка сзади(c)
-Правильно, сначала давайте перекусим, а дружелюбие проявите потом (с)

Последний раз редактировалось SaikoNS; 27.10.2010 в 22:20.
SaikoNS вне форума Ответить с цитированием
Старый 29.10.2010, 21:06   #7
SaikoNS
 
Аватар для SaikoNS
 
Регистрация: 14.03.2010
Сообщений: 6
По умолчанию

Уважаемые модераторы,закройте,пожалуйста,тему .
-Иногда движение вперед является результатом пинка сзади(c)
-Правильно, сначала давайте перекусим, а дружелюбие проявите потом (с)
SaikoNS вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Из линейного списка в двусвязный(Си) Lexeres Помощь студентам 0 06.05.2010 19:31
Сортировка линейного списка alesfer Помощь студентам 1 03.04.2010 21:16
Сортировка линейного списка, реализованного двумя массивами coptor Общие вопросы Delphi 1 28.11.2008 18:45
Сортировка линейного списка. ТИВ Паскаль, Turbo Pascal, PascalABC.NET 3 23.11.2008 22:39