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

Сортировка очереди с одной вставкой

28.03.2019, 01:36. Показов 2214. Ответов 4

Author24 — интернет-сервис помощи студентам
Нужно реализовать структуру данных «очередь с одной головой», связь указателями. Так же в этой структуре реализовать сортировку простой вставкой. С сортировкой хочу сам разобраться, но никак не пойму, что это за очередь такая с одной головой и как ее реализовывать. Буду благодарен за любую помощь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2019, 01:36
Ответы с готовыми решениями:

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка...

Сортировка выбором, сортировка вставкой, сортировка заменой, сортировка обменом ("пузырьковая" сортировка)
Создать класс, содержащий массив и реализующий алгоритмы сортировки и бинарного поиска в этом...

Сортировка вставкой
В файле input.txt содержатся сведения о группе студентов в формате:номер группы, фамилия, имя, год...

Сортировка вставкой
Всем привет. Задали задание написать код сортировки вставкой. Писал код по блок-схеме. Код...

4
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
28.03.2019, 18:44 2
Цитата Сообщение от Zireae1 Посмотреть сообщение
что это за очередь такая с одной головой
Это односвязный список. Поищите реализацию на форуме, такого добра здесь навалом)
1
0 / 0 / 0
Регистрация: 11.10.2017
Сообщений: 34
28.03.2019, 22:52  [ТС] 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
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
struct element {
 
    int value;
    element *next;
 
};
class Queue {
 
public:
    element *head;
 
    Queue() {
 
        head = 0;
 
    }
 
    ~Queue();
 
    void enQueue(int n) {
 
        if (head == 0) {
 
            head = new element;
            head->value = n;
            head->next = 0;
 
        } else if (head->next == 0) {
 
            element *tmpElement = new element;
            tmpElement->value = n;
            tmpElement->next = 0;
            head->next = tmpElement;
 
        } else {
 
            element *currentElement = head->next;
 
            while (currentElement->next != 0) {
 
                currentElement = currentElement->next;
 
            }
 
            element *tmpElement = new element;
            tmpElement->value = n;
            tmpElement->next = 0;
            currentElement->next = tmpElement;
 
        }
 
    }
 
    void deQueue() {
 
        if (getSizeQueue() == 0) {
 
            return;
 
        } else {
 
            head = head->next;
 
        }
 
 
    }
 
    int deQueueReturn() {
 
        int n = 0;
 
        if (getSizeQueue() == 0) {
 
            cin.get();
 
        } else {
 
            n = head->value;
            head = head->next;
 
        }
 
        return n;
 
    }
 
 
    int getSizeQueue() {
 
        int i = 0;
        element *currentElement = head;
        while (currentElement != 0) {
 
            currentElement = currentElement->next;
            ++i;
 
        }
 
        return i;
 
    }
 
    void showQueue() {
 
        element *currentElement = head;
        while (currentElement != 0) {
 
            cout << currentElement->value << " ";
            currentElement = currentElement->next;
 
        }
 
        cout << endl;
 
    }
 
    void sortQueue() {
 
    }
 
};
0
330 / 145 / 56
Регистрация: 17.10.2015
Сообщений: 580
29.03.2019, 11:55 4
Цитата Сообщение от Zireae1 Посмотреть сообщение
С сортировкой хочу сам разобраться
Цитата Сообщение от Zireae1 Посмотреть сообщение
вот накидал, с сортировкой туго что-то
Цитата Сообщение от Zireae1 Посмотреть сообщение
C++
1
2
void sortQueue() {
}
Мда.
Сортировка односвязного списка
0
0 / 0 / 0
Регистрация: 11.10.2017
Сообщений: 34
30.03.2019, 00:58  [ТС] 5
Там все не то, я уже реализовал, как препод требовал
Оставлю тут, может кому пригодится


вот этот кусок в классе написал
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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
int getItemQueue(int position) {
 
        int i = 0, item;
        element *currentElement = head;
 
        while (i < position) {  // дропаем очередь до первого элемента
 
            currentElement = currentElement->next;
            i++;
 
        }
 
        item = currentElement->value;
 
        return item;
 
    }
 
    void swap(int position1, int position2) {//делит на 3 очереди
 
        if (position2 - position1 > 1) {
 
            Queue *beginQueue = new Queue();
            Queue *middleQueue = new Queue();
            Queue *endQueue = new Queue();
            int i = 0, value1, value2;
            element *currentElement = head;
 
            while (i < position1) {  // дропаем очередь до первого элемента
 
                beginQueue->enQueue(deQueueReturn());
                currentElement = currentElement->next;
                i++;
 
            }
 
            value1 = deQueueReturn(); // дропаем первый нужный элемент
            currentElement = head;
            i = 0;
 
            do { // дропаем очередь от первого до второго элемента
 
                middleQueue->enQueue(deQueueReturn());
                currentElement = currentElement->next;
                i++;
 
            } while (i < position2 - position1 - 1);
 
            value2 = deQueueReturn(); // дропаем второй элемент
            currentElement = head;
 
            while (currentElement) { // дропаем конец очереди для сохранения порядка очереди
 
                endQueue->enQueue(deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
            currentElement = beginQueue->head;
 
            while (currentElement) { // заливаем начало очереди
 
                enQueue(beginQueue->deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
            enQueue(value2); // ставим второй элемент на место первого
            currentElement = middleQueue->head;
 
            while (currentElement) { // заливаем очередь от первоого до второго элементов
 
                enQueue(middleQueue->deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
            enQueue(value1); // ставим первый элемент на место второго
            currentElement = endQueue->head;
 
            while (currentElement) { // дозаливаем конец очереди
 
                enQueue(endQueue->deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
        } else {
 
            Queue *beginQueue = new Queue();
            Queue *endQueue = new Queue();
            int i = 0, value1, value2;
            element *currentElement = head;
 
            while (i < position1) { // дропаем очередь до первого элемента
 
                beginQueue->enQueue(deQueueReturn());
                currentElement = currentElement->next;
                i++;
 
            }
 
            value1 = deQueueReturn(); // дропаем первый нужный элемент
            currentElement = head;
            value2 = deQueueReturn(); // дропаем второй нужный элемент
            currentElement = head;
            i = 0;
 
            while (currentElement) { // дропаем остаток очереди
 
                endQueue->enQueue(deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
            currentElement = beginQueue->head;
 
            while (currentElement) { // заливаем начало очереди
 
                enQueue(beginQueue->deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
            enQueue(value2); // ставим нужные элементы на места друг друга
            enQueue(value1);
            currentElement = endQueue->head;
 
            while (currentElement) { // дозаливаем конец очереди
 
                enQueue(endQueue->deQueueReturn());
                currentElement = currentElement->next;
 
            }
 
        }
 
    }

вот это в main
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
int main() {
 
    auto Q = new Queue();
    int n = 30, count = 0;
 
    for (int i = 0; i < n; i++) {
 
        Q->enQueue(Random(0, 100));
 
    }
 
    cout << "Исходный массив:  ";
    Q->showQueue();
 
    for (int i = 1; i < n; i++) {
 
        for (int j = i; j > 0 && Q->getItemQueue(j - 1) > Q->getItemQueue(j); j--) {
 
            Q->swap(j - 1, j);
            ++count;
 
        }
 
    }
 
    cout << "После сортировки: ";
    Q->showQueue();
 
    cout << "Операций: " << count << endl;
 
    return 0;
}
0
30.03.2019, 00:58
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
30.03.2019, 00:58
Помогаю со студенческими работами здесь

сортировка вставкой
Написал небольшой код сортировки выбором, как бы все понятно. //сортировка выбором ...

сортировка вставкой
вот сделал по возрастанию for i := 1 to k do begin j := i; q := m; while (j &gt;...

Сортировка вставкой с++
Проблема с сортировкой вставкой. Дайте код

Сортировка вставкой
Помогите составить блок-схему алгоритма &quot;Сортировки вставкой&quot;


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

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