1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 68
1

Добавление элемента в отсортированную последовательность

03.12.2017, 12:17. Показов 806. Ответов 2
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите, пожалуйста, исправить функции добавления в отсортированный список и массив. В первом случае выбрасывает непонятное исключение, во втором - работает только при вводе элементов в обратном порядке.
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
template <typename T> void SortedList<T>::Add(T element)
{
    int s = -1;
    elem* temp = Head;
    elem* temp2 = new elem;
    if (Head == nullptr)
    {
        temp2->data = element;
    }
    else
    {
        while ((temp->data < element))
        {
            
            temp2->data = temp->data;
            temp = temp->Next;
            temp2 = temp2->Next;
            s++;
        }
        temp2->data = element;
        temp2 = temp2->Next;
        
            for (int i = s; i < length; i++)
            {
                temp2->data = temp->data;
                temp = temp->Next;
                temp2 = temp2->Next;
            }
        
        
        
    }
    Head = temp2;
    length++;
}
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
template <typename T> void SortedArray<T>::Add(T element)
{
    T* arr2 = new T[length + 1];
    if (length == 0)
    {
        arr2[0] = element;
        delete[] arr;
        arr = arr2;
        //length++;
    }
    else {
        int i = 0;
        while ((i < length) && (arr[i] < element)) //ищем место, куда поставить случайное число
        {
            i++;
        }
        for (int j = length; j > i; j--) //сдвигаем все элементы массива на 1 в конец, чтобы вставить случайный элемент
        {
            arr2[j] = arr[j - 1];
        }
        arr2[i] = element;
        delete[] arr;
        arr = arr2;
        }
    length++;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.12.2017, 12:17
Ответы с готовыми решениями:

Из двух файлов содержащие отсортированную последовательность объединить обе последовательности в третьем файле
Доброе время суток. Имеется два файла содержащие отсортированную последовательность из N и M к...

Включить число в отсортированную последовательность не нарушив порядок
В упорядоченную по возрастанию последовательность из целых чисел включить заданное число так,...

Ввести отсортированную последовательность структур с полями Дата и Событие
Условие: Ввести отсортированную последовательность структур с полями Дата и Событие (тоесть - если...

Списки. Инициализация, добавление элемента в начало и после другого элемента. Удаление элемента
uses crt; type list= ^item; item=record data: integer; next:list; end; var l:list;...

2
7785 / 6553 / 2983
Регистрация: 14.04.2014
Сообщений: 28,621
03.12.2017, 13:05 2
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
template <typename T> void SortedList<T>::Add(T element)
{
    elem* temp2 = new elem;
    temp2->data = element;
 
    if (Head == nullptr) Head = temp2;
    else
    {
        elem* temp = Head, *prev = nullptr;
        while (temp != nullptr && temp->data < element)
        {
            prev = temp;
            temp = temp->Next;
        }
 
        if (temp == Head) // в начало
        {
            temp->Next = Head;
            Head = temp;
        }
        else if (temp != nullptr) // в середину
        {
            prev->Next = temp2;
            temp2->Next = temp;
        }
        else if (temp == nullptr) // в конец
        {
            //...
        }
    }
 
    length++;
}
Вставку в конец допиши.
1
1 / 1 / 0
Регистрация: 06.11.2016
Сообщений: 68
03.12.2017, 13:41  [ТС] 3
Спасибо огромное!
0
03.12.2017, 13:41
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.12.2017, 13:41
Помогаю со студенческими работами здесь

Добавление элемента с максимальным значением после минимального элемента (Allegro Lisp)
Помогите сделать 1 программку максимально просто -добавление элемента с максимальным значением...

Сделать добавление элемента в массив и удаление элемента из массива используя STL
Всем привет. Помогите пожалуйста написать. Нужно использовать STL. Необходимо сделать добавление...

Добавление элемента после элемента с заданным ключом в однонаправленном списке
Здравствуйте! У меня неправильно работает функция insert, которая должна добавлять элемент после...

Шаблонный класс лист. Добавление элемента на место существующего элемента
Всем привет. У меня есть шаблонны класс лит: class List { public: List(); ~List(); List&amp;...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

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