Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.71
pitline
41 / 9 / 4
Регистрация: 21.12.2013
Сообщений: 208
#1

Сортировка односвязного списка пузырьком - C++

02.05.2014, 18:58. Просмотров 2425. Ответов 5
Метки нет (Все метки)

Сортирую список по убыванию пузырьком (он заполняется 46 случайными числами от 1 до 26)
Смысл понятен но в синтаксисе языка делаю ошибки.
Собственно сам код
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#include <iostream>
#include <conio.h>
#include <ctime>
#include <cstdlib>
 
#include <list>
 
using namespace std;
//создаем функцию для вывода списка
void Print(mylist *b)
{
    mylist *print = b;
    while(print)
    {
        cout << print->a.key << "->";
        print = print->next;
    }
    cout << "NULL\n" << endl;
}
 
 
//функция заполнения и сортировки
  int main()
  {
      //заполнение
  srand(time(0));
    int n, tmp;
    int *begin, *end;//указатель на начало и конец списка
    list<int> mylist; //создаем список
      for (int i = 0; i < 46; i++)
      {  
          //присваиваем переменной n случайные значения от 1 до 46
          n=1 + rand() % 26;
          
          //заполняем список значениями от 1 до 46 включительно
          mylist.push_back(n);
      }
 
 
      //сортировка
       for (int i = 0; i < 46; i++)
      {  
          for (int j = 0; j < 46; j++)
          {
              if(mylist->begin < mylist->next)//если последующий больше предыдущего
 
                  //меняем местами элементы упорядочивая по убыванию
              {
                tmp = mylist->next;
                mylist->begin = mylist->next;
                mylist->begin =tmp;
              }
          }
      }
 
      cout << "Вывод списка" << endl;
 
      Print(begin);
      _getch();
      return 0;
  }
Думаю по комментам и смыслу понятно что где, спасибки все кто терпеливо проглядел код)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.05.2014, 18:58     Сортировка односвязного списка пузырьком
Посмотрите здесь:

Сортировка односвязного списка - C++
Здравствуйте уважаемые киберфорумщики! Нужна срочная помощь!!! В общем у меня есть задача которую нужно сделать но нет ни знаний ни...

Сортировка односвязного списка - C++
Помогите пишу курсач сделал все ф-ции кроме сортировки в голову не приходит как что не пробовал без результатно( прошу помочь( уже как...

Сортировка односвязного списка - C++
Добрый день форумчанам! Есть задача но не знаю как написать ее так как не знаю динамического программирования ) Будьте любезны...

Сортировка односвязного списка - C++
В условии задачи нужно считать из файла неопределенное количество студентов и занести их в односвязный список. Отсортировать по изучаемому...

Сортировка односвязного списка - C++
ребят, нужна помощь, учусь на втором курсе для зачета нужно написать сортировку односвязного списка. а мы такого рода программы не...

Сортировка списка пузырьком - C++
Вот такой код, как переделать сортировку чтобы менялись адреса элементов списка? #include &quot;iostream&quot; using namespace std; ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
02.05.2014, 19:11     Сортировка односвязного списка пузырьком #2
pitline, а вы уверены, что List работает именно так? В нем есть вот такое ? a.key?
pitline
41 / 9 / 4
Регистрация: 21.12.2013
Сообщений: 208
02.05.2014, 19:26  [ТС]     Сортировка односвязного списка пузырьком #3
Цитата Сообщение от TenGen Посмотреть сообщение
В нем есть вот такое ? a.key?
a.key значение элемента списка которое нужно вывести, но я не знаю как его записать и такая запись не правильная, но как вписать в этот вывод цикл с перебором элементов списка я не знаю
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
02.05.2014, 19:38     Сортировка односвязного списка пузырьком #4
pitline, обычно в таких случаях делают собственную реализацию списка) что бы понять принцип действия и устройства. Но если не хотите такой вариант (или вас заставляют использовать именно готовые реализации), то для начала: передаваемый параметр в функции должен иметь тип list<int>. Вы вписали вместо типа объекта название списка из функции main, так работать не будет. Указатель в функции тоже должен иметь тип list<int>. И я не нашел в list поле a.key
pitline
41 / 9 / 4
Регистрация: 21.12.2013
Сообщений: 208
02.05.2014, 19:49  [ТС]     Сортировка односвязного списка пузырьком #5
Т. е. в строке 36
Цитата Сообщение от pitline Посмотреть сообщение
mylist.push_back(n);
должен иметь вид как
C++ (Qt)
1
list<int>.push_back(n);
?
А в выводе наверно нужно поставить вместо a.key *begin(указатель на начало списка)
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
void Print(mylist *b)
{
    mylist *print = b;
    while(print)
    {
        cout << print->*begin << "->";
        print = print->next;
    }
    cout << "NULL\n" << endl;
}
Если знаете подскажите пожалуйста как вообще правильно записывается цикл с перебором элементов списка, спасибо.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.05.2014, 19:57     Сортировка односвязного списка пузырьком
Еще ссылки по теме:

Сортировка списка пузырьком - C++
Привет, я пытаюсь сделать сортировку пузырьком списка, но программа не идет. В чем ошибка? void bubble_sort(uSeznam spisok) { item *...

Сортировка односвязного списка (2 метода) - C++
Здравствуйте, у меня проблема с сортировкой односвязного списка(то теряю указатель и получается список короче, то не до конца обходятся...

Сортировка односвязного списка символов - C++
я понимаю как создавать, как заполнять, но как его сортировать я хз :(

Сортировка списка пузырьком по убыванию - C++
Правильно ли составлен цикл для сортировки списка пузырьком по убыванию? tElem *mylist; bool run=true; while (run){ ...

Сортировка пузырьком связного списка - C++
Доброго времени суток, надеюсь на вашу помощь в понимании проблемы при сортировке пузырьком связного списка (привожу только код сортировки,...

Не работает сортировка для односвязного списка - C++
Код следующий: #include &lt;iostream&gt; #include &lt;string.h&gt; #include &lt;stdlib.h&gt; #include &lt;algorithm&gt; #include &lt;string&gt; using...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
TenGen
Будущее рядом
97 / 95 / 20
Регистрация: 06.03.2014
Сообщений: 342
02.05.2014, 19:57     Сортировка односвязного списка пузырьком #6
pitline,
C++
1
2
3
4
5
6
7
8
9
10
11
void Print(list<int> *b)
{
    iterator *counter = b->begin;
    cout << counter.value << endl; // Я не знаю, какое поле в списке хранит значение
    while(counter->next)
    {
        cout << counter->value << endl";
        counter = counter->next;
    }
    cout << "NULL\n" << endl;
}
Что то типа такого... Но я могу ошибиться.

mylist.push_back(n); правильно написан, потому что при вызове функции вы указываете имя объекта, с которым хотите работать. Когда же вы передаете в функцию параметры, вы указываете тип входящего параметра, то есть list<int>
Yandex
Объявления
02.05.2014, 19:57     Сортировка односвязного списка пузырьком
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru