Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
1

Сортировка линейного списка перестановками

18.04.2012, 00:41. Показов 1745. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
я написал алгоритм который будет просто менять поля value а не перенаправлять указатели, но программа не работает правильно не могли бы вы мне показать где ошибки
C++
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
62
63
64
65
66
67
68
69
70
71
#include <iostream>
#include <fstream>
using namespace std;
 
 
struct tElem
{
 int value;
 tElem *next;
 
};
 
void create_list(tElem* &h1,ifstream &f)
{
tElem* temp;
 
h1=new tElem;
 
temp=h1;
 
f>>temp->value;
 
while(f.peek()!=EOF)
    {
        temp->next=new tElem;
        
        temp=temp->next;
        
        temp->next=NULL;
        
        f>>temp->value;
    }
 
}
 
int main()
{
 tElem *c;
 
 ifstream file("bubble.txt");
 
 create_list(c,file);
 tElem *t=c;
 
while (file.peek()!=EOF)
{
     c=t;
 
    while (c->next!=NULL)
    {
     if (c->value>c->next->value)
        {
            int temp=c->value;
 
            c->value=c->next->value;
 
            c->next->value=temp;
        }
    c=c->next;
    }
 }
t=c;
while (t)
{
    cout<<t->value<<" ";
    t=t->next;
}
file.close();
 
 return 0;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2012, 00:41
Ответы с готовыми решениями:

Сортировка однонаправленного линейного списка
Нужно отсортировать однонаправленный линейный список сортировкой слиянием и бинарной сортировкой....

Сортировка динамического линейного списка
Подскажите пожалуйста как вывести список книг изданных после указанного года.Я уже все пересмотрела...

Сортировка односвязного линейного списка по алфавиту
Всем здравствуйте! Имеется линейный список. Помогите, пожалуйста, написать сортировку студентов...

Сортировка линейного списка по полю year
Господа подскажите как осуществить сортировку списка по полю year? При этом неважно по убыванию...

3
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
28.04.2012, 00:24  [ТС] 2
простой алгоритм с обменом полей value я сделал, а вот с перенаправлением указателей рабочий пока не получается только попытка
C++
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <fstream>
using namespace std;
 
 
struct tElem 
{
 int value;
 tElem *next;
 
};
 
void create_list(tElem* &h1,ifstream &f)  
{
tElem* temp; 
 
h1=new tElem; 
 
temp=h1; 
 
f>>temp->value; 
 
while(f.peek()!=EOF) 
    {
        temp->next=new tElem;
 
        temp=temp->next;
 
        temp->next=NULL;
 
        f>>temp->value;
    }
 
}
 
 
 
int main()
{
 tElem *c;
 
 ifstream file("bubble.txt");
 
 create_list(c,file);
 
 tElem *start;
 
 start=new tElem;
 
 start=c;
 
 tElem *t=c;
 
bool run=true;
 
while(run)
{    run=false;
 
     c=start; 
 
    while (c->next!=NULL) 
    {
     if (c->value>c->next->value) 
        {
            if (c==start)
            {
                start=c->next;
                c->next=start->next;
                start->next=c;
            }
        else
                {
                    t->next=c->next;
                    c->next=c->next->next;
                    t->next->next=c;
                }
        run=true;
        }
        t=c;
    c=c->next;
    }
 }
// вывод на экран
while (c)
{
    cout<<c->value<<" ";
    c=c->next;
}
file.close();
getchar();
 return 0;
}
в чем здесь может быть ошибка?
0
96 / 748 / 279
Регистрация: 11.04.2012
Сообщений: 971
28.04.2012, 12:03 3
C++
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 <stdio.h>
#include <conio.h>
 
#include <iostream>
#include <fstream>
 
struct tElem
{
    int value;
    tElem* next;
};
 
tElem* h1 = NULL;
tElem* temp = NULL;
 
using namespace std;
 
bool issorted(tElem*& h1);
void create_list(tElem*& h1, std::ifstream& ifs);
 
int main(void)
{
    char* filename = "d:\\input.txt";
    ifstream ifs(filename, ifstream::in);
 
    create_list(h1, ifs);
 
    do {
        for (tElem* list = h1; list->next != NULL; list = list->next)
              if (list->value > list->next->value)
              { int temp = list->next->value; 
                list->next->value = list->value;
                list->value = temp; }
    }while(!issorted(h1));
 
    for (tElem* list = h1; list != NULL; list = list->next)
        cout << list->value << " ";
    cout << endl;
 
    return 0;
}
 
void create_list(tElem*& h1, std::ifstream& ifs)
{
    int value = 0; h1 = new tElem; 
    ifs>>h1->value; temp = h1;
    while (ifs.peek() >= 0 && ifs.good())
    {
        tElem* item = new tElem;
        ifs>>item->value; item->next = NULL;
        temp->next = item; temp = item;
    }
}
 
bool issorted(tElem*& h1)
{
    for (tElem* list = h1; list->next != NULL; list = list->next)
        if (list->value > list->next->value)
            return false;
    return true;
}
input.txt:
2 5 7 4 5 6 9 1 0
1
30 / 1 / 1
Регистрация: 28.10.2010
Сообщений: 102
01.05.2012, 00:16  [ТС] 4
но все-таки этот алгоритм меняет только поля value
0
01.05.2012, 00:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.05.2012, 00:16
Помогаю со студенческими работами здесь

Сортировка линейного списка слиянием сверху вниз
«Функция merge должна сливать список, на который указывает a, со списком, на который указывает b, с...

Сортировка двунаправленного линейного списка по алгоритму Хоара
ПОМОГИТЕ СРОЧНО!!!! нужно отсортировать двунаправленный линейный список по алгоритму Хоара менять...

Спроектировать шаблон класса spisok для реализации односвязного линейного списка. Не работает сортировка
Здравствуйте! Очень нужна помощь в реализации программы. Задание: Спроектировать шаблон класса...

Сортировка перестановками
Хотел написать функцию для сортировки. Компилятор ошибок не выдает.На выводе выходит это: 3 2 5 4 ...

сортировка перестановками
нужно отсортировать линейный список перестановками я так понимаю это тоже самое что пузырек?

Сортировка обменом (перестановками)
Требуется написать программу для решения задачи(картинка во вложении). Имеется код для генерации...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru