Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 05.01.2016
Сообщений: 6
1

Функция удаления строки с номером к из списка

10.02.2017, 13:13. Показов 852. Ответов 5
Метки нет (Все метки)

Хелп , заранее спасибо
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.02.2017, 13:13
Ответы с готовыми решениями:

Написать программу удаления всех элементов строки с номером k и столбца с номером 1 заданной матрицы
Написать программу удаления всех элементов строки с номером k и столбца с номером 1 заданной...

Написать программу удаления из строки слова с заданным номером.
8.10.1. Помогите, пожалуйста, решить задачу. Написать программу удаления из строки слова с...

Функция удаления списка
void delete_list(list *tmp1) { list *tmp2 = (list*)malloc(sizeof(list)); tmp2 = tmp1->next;...

Функция удаления из списка
Пишу программу, которая сортирует список выбором. Все вроде нормально, вот только функция удаления...

5
0 / 0 / 0
Регистрация: 05.01.2016
Сообщений: 6
10.02.2017, 13:16  [ТС] 2
нужна функция для удаления строки под номером к из списка, заранее спасибо
0
Любитель чаепитий
3671 / 1747 / 543
Регистрация: 24.08.2014
Сообщений: 5,888
Записей в блоге: 1
10.02.2017, 13:24 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
#include <iostream>
#include <list>
#include <algorithm>
 
template<typename Tp>
void deleteKElem(std::list<Tp> & list, const int k)
{
    typename std::list<Tp>::const_iterator erasingElem = list.begin();
    std::advance(erasingElem, k);
    list.erase(erasingElem);
}
 
int main()
{
    std::list<int> l{1, 2, 3};
    
    const int k = 2;
    
    deleteKElem(l, k);
    
    for (const auto & it : l)
        std::cout << it << ' ';
}
1
0 / 0 / 0
Регистрация: 05.01.2016
Сообщений: 6
10.02.2017, 13:48  [ТС] 4
а можно попросить сделать для определённой структуры?
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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
#include <windows.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
 
 
 
 
 
using namespace std;
 
 
struct Data //структура данных в списке
{
    string Destination;//строка - пункт назначения
    string nReis;//строка - номер рейса(обычно двебуквы и несколько цифр)
    string PlaneType;//строка - тип самолета
};
 
struct AEROFLOT //структура списка
{
    Data d;
    AEROFLOT *next;//указатель на следующий элемент
};
 
void Print(AEROFLOT*);//функция вывода списка
void Add(AEROFLOT**, Data&);//функция добавления элемента со встроенной сортировкой по пункту назначения
void Delete(AEROFLOT**, string);//функция удаления элемента по полю номер рейса
void Clear(AEROFLOT**);//функция очистки списка
void FindDest(AEROFLOT*, string);//функция поиска по пункту назначения
void Load(bool&, string, AEROFLOT**);//функция загрузки из файла
void Save(string, AEROFLOT*);//функция сохранения в файл
void Edit(string, AEROFLOT**);//функция редактирования записи, найденной по номеру рейса
//функции для сортировки слиянием
void merge(AEROFLOT*, AEROFLOT*, AEROFLOT**);//вспом функция - слияние двух отсортированных списков
void split(AEROFLOT*, AEROFLOT**, AEROFLOT**);//вспом функция - делит список пополам
void mergeSort(AEROFLOT**);//функция сортировки
 
 
int main() //главная функция
{
    setlocale(0, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    bool loaded = false;//ставим флаг о загрузке файла в ЛОЖЬ
    string vibor = "";
    Data rec;
    string filename = "C:\\Users\\neonx\\Documents\\Visual Studio 2013\\Projects\\курсовая\\dbFile.txt";
    string fNum = "";
    string fDest = "";
    AEROFLOT *list = NULL;
    
 
    
 
    do //цикл вывода меню
    {
        cout << "1 - Добавление рейса" << endl;
        cout << "2 - Просмотр рейсов " << endl;
        cout << "3 - Поиск рейсов" << endl;
        cout << "4 - Изменить информацию о рейсе" << endl;
        cout << "5 - Сохранить в файл" << endl;
        cout << "6 - Загрузить из файла" << endl;
        cout << "7 - Удалить" << endl;
        cout << "8 - Очистить список" << endl;
        cout << "9 - Выход" << endl;
        cout << "0 - Очистить экран и вывести меню" << endl;
        cout << "Введите команду: ";
        cin >> vibor;//считываем номер введенной команды
 
        switch (vibor[0]) //в соответствии с выбором вызываем нужную функцию
        {
        case '1':
            cout << "Введите пункт назначения: ";
            cin >> rec.Destination;
 
            for (int i = 0; i < rec.Destination.size(); i++)
            {
                if (isdigit(rec.Destination[i]))
                {
                    cout << "Ошибка\n";
                    cin >> rec.Destination;
                    break;
                }
            }
            cout << "Введите номер рейса: ";
            cin >> rec.nReis;
            
 
            cout << "Введите тип самолета: ";
            cin >> rec.PlaneType;
            Add(&list, rec);//добавление записи
            break;
 
        case '2':
            Print(list);//вывод списка
            break;
        case '3':
            cout << "Введите пункт назначения: ";
            cin >> fDest;
            for (int i = 0; i< fDest.size(); i++)
            {
                if (isdigit(fDest[i]))
                {
                    cout << "Ошибка\n";
                    cin >> fDest;
                    break;
                }
            }
            FindDest(list, fDest);//поиск по пункту назначения
            break;
        case '4':
            cout << "Введите номер рейса, запись о котором необходимо изменить: ";
            cin >> fNum;
            Edit(fNum, &list);//редактирование записи, найденной по номеру рейса
            mergeSort(&list);//сортировка отредактированного списка
            break;
        case '5':
            if (list == NULL)
            {
                cout << "В списке нет элементов!!! Нечего записывать!!!" << endl;
                break;
            }
            Save(filename, list);//сохранение списка в файл
            cout << "Данные сохранены в файл." << endl;
            break;
        case '6':
            Load(loaded, filename, &list);//загрузка списка из файла
            break;
        case '7':
            cout << "Введите номер рейса, запись о котором необходимо удалить: ";
            cin >> fNum;
            Delete(&list, fNum);//удаление элемента по номеру рейса
            break;
        case '8':
            Clear(&list);//очистка списка
            break;
        case '9':
            Clear(&list);//очистка списка
            delete list;//удаление списка
            break;
        case '0':
            system("cls");//очистка экрана
            break;
        default:
            cout << "Введено неверное значение!!!" << endl;
        }
    } while (vibor[0] != '9');//цикл повторяется пока не получит команду на выход из программы
 
    return 0;
}
Добавлено через 7 минут
GbaLog-, спасибо, а можешь сделать для данной структуры
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
139
140
141
142
143
144
145
146
147
148
#include <windows.h>
#include <iostream>
#include <fstream>
#include <iomanip>
#include <string>
 
using namespace std;
 
 
struct Data //структура данных в списке
{
    string Destination;//строка - пункт назначения
    string nReis;//строка - номер рейса(обычно двебуквы и несколько цифр)
    string PlaneType;//строка - тип самолета
};
 
struct AEROFLOT //структура списка
{
    Data d;
    AEROFLOT *next;//указатель на следующий элемент
};
 
void Print(AEROFLOT*);//функция вывода списка
void Add(AEROFLOT**, Data&);//функция добавления элемента со встроенной сортировкой по пункту назначения
void Delete(AEROFLOT**, string);//функция удаления элемента по полю номер рейса
void Clear(AEROFLOT**);//функция очистки списка
void FindDest(AEROFLOT*, string);//функция поиска по пункту назначения
void Load(bool&, string, AEROFLOT**);//функция загрузки из файла
void Save(string, AEROFLOT*);//функция сохранения в файл
void Edit(string, AEROFLOT**);//функция редактирования записи, найденной по номеру рейса
//функции для сортировки слиянием
void merge(AEROFLOT*, AEROFLOT*, AEROFLOT**);//вспом функция - слияние двух отсортированных списков
void split(AEROFLOT*, AEROFLOT**, AEROFLOT**);//вспом функция - делит список пополам
void mergeSort(AEROFLOT**);//функция сортировки
 
 
int main() //главная функция
{
    setlocale(0, "rus");
    SetConsoleCP(1251);
    SetConsoleOutputCP(1251);
    bool loaded = false;//ставим флаг о загрузке файла в ЛОЖЬ
    string vibor = "";
    Data rec;
    string filename = "C:\\Users\\neonx\\Documents\\Visual Studio 2013\\Projects\\курсовая\\dbFile.txt";
    string fNum = "";
    string fDest = "";
    AEROFLOT *list = NULL;
    
 
    
 
    do //цикл вывода меню
    {
        cout << "1 - Добавление рейса" << endl;
        cout << "2 - Просмотр рейсов " << endl;
        cout << "3 - Поиск рейсов" << endl;
        cout << "4 - Изменить информацию о рейсе" << endl;
        cout << "5 - Сохранить в файл" << endl;
        cout << "6 - Загрузить из файла" << endl;
        cout << "7 - Удалить" << endl;
        cout << "8 - Очистить список" << endl;
        cout << "9 - Выход" << endl;
        cout << "0 - Очистить экран и вывести меню" << endl;
        cout << "Введите команду: ";
        cin >> vibor;//считываем номер введенной команды
 
        switch (vibor[0]) //в соответствии с выбором вызываем нужную функцию
        {
        case '1':
            cout << "Введите пункт назначения: ";
            cin >> rec.Destination;
 
            for (int i = 0; i < rec.Destination.size(); i++)
            {
                if (isdigit(rec.Destination[i]))
                {
                    cout << "Ошибка\n";
                    cin >> rec.Destination;
                    break;
                }
            }
            cout << "Введите номер рейса: ";
            cin >> rec.nReis;
            
 
            cout << "Введите тип самолета: ";
            cin >> rec.PlaneType;
            Add(&list, rec);//добавление записи
            break;
 
        case '2':
            Print(list);//вывод списка
            break;
        case '3':
            cout << "Введите пункт назначения: ";
            cin >> fDest;
            for (int i = 0; i< fDest.size(); i++)
            {
                if (isdigit(fDest[i]))
                {
                    cout << "Ошибка\n";
                    cin >> fDest;
                    break;
                }
            }
            FindDest(list, fDest);//поиск по пункту назначения
            break;
        case '4':
            cout << "Введите номер рейса, запись о котором необходимо изменить: ";
            cin >> fNum;
            Edit(fNum, &list);//редактирование записи, найденной по номеру рейса
            mergeSort(&list);//сортировка отредактированного списка
            break;
        case '5':
            if (list == NULL)
            {
                cout << "В списке нет элементов!!! Нечего записывать!!!" << endl;
                break;
            }
            Save(filename, list);//сохранение списка в файл
            cout << "Данные сохранены в файл." << endl;
            break;
        case '6':
            Load(loaded, filename, &list);//загрузка списка из файла
            break;
        case '7':
            cout << "Введите номер рейса, запись о котором необходимо удалить: ";
            cin >> fNum;
            Delete(&list, fNum);//удаление элемента по номеру рейса
            break;
        case '8':
            Clear(&list);//очистка списка
            break;
        case '9':
            Clear(&list);//очистка списка
            delete list;//удаление списка
            break;
        case '0':
            system("cls");//очистка экрана
            break;
        default:
            cout << "Введено неверное значение!!!" << endl;
        }
    } while (vibor[0] != '9');//цикл повторяется пока не получит команду на выход из программы
 
    return 0;
}
0
1266 / 1024 / 469
Регистрация: 25.12.2016
Сообщений: 3,331
10.02.2017, 22:41 5
Цитата Сообщение от neonx Посмотреть сообщение
Функция удаления строки с номером к из списка
Что понимается под списком?
0
57 / 61 / 34
Регистрация: 14.03.2014
Сообщений: 829
10.02.2017, 22:55 6
neonx недавно все это реализовывал (односвязный список)

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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
#include<iostream>
using namespace std;
 
struct List
{
    int key;
    List* next;
};
void CreateList(List** start);
void Print(List* b);
void AddFirst(List** b, int k);
void AddLast(List** end, int k);
void FindNode(List** head, int k);
void Insert(List** head, int after);
void Delete(List** begin, int k);
void Free(List** begin);
int main()
{
    List* begin = nullptr;
    CreateList(&begin);
    Print(begin);
    AddFirst(&begin, -100);
    Print(begin);
    AddLast(&begin, 555);
    Print(begin);
    FindNode(&begin, 4);
    Print(begin);
    Insert(&begin, 2);
    Print(begin);
    Delete(&begin, -100);
    Print(begin);
    Free(&begin);
    Print(begin);
 
    cin.get();
    
    return 0;
}
 
void CreateList(List** start)
{
    
    (*start) = new List;
    (*start)->next = nullptr;
    (*start)->key = 0;
 
    List* end = *start;
    for (int i = 1; i < 5; i++)
    {
        end->next = new List;
        end = end->next;
        end->key = i;
        end->next = nullptr;
 
    }
}
 
void Print(List* b)
{
    List* print = b;
    while (print)
    {
        cout << print->key << " -> ";
        print = print->next;
    }
    cout << "nullptr\n";
}
 
void AddFirst(List** b, int k)
{
    List* t1 = new List;
    t1->key = k;
    t1->next = *b;
    *b = t1;
}
 
 
void AddLast(List** end, int k)
{
    List* t2 = new List;
    if (*end == nullptr)
    {
        t2->key = k;
        t2->next = nullptr;
        *end = t2;
        return;
    }
 
    List* point = *end;
    while ((*end)->next)
        *end = (*end)->next;
        
    (*end)->next = t2;
    (*end) = (*end)->next;
    (*end)->key = k;
    (*end)->next = nullptr;
    *end = point;
}
 
void FindNode(List** head, int k) // k - значение которое нужно найти 
{
    List* point = *head;
    while (*head)
    {
        if ((*head)->key == k)
        {
            cout << *head<<'\n';
            *head = point;
            return;
        }
        *head = (*head)->next;
    }
    cout << "Node not exist\n";
    *head = point;
}
 
void Insert(List** head, int after) // вставка значения, после значения after
{
    List* start = *head;
    while (*head)
    {
        if ((*head)->key == after)
        {
            List* p = (*head)->next;
            List* TNode = new List;
            (*head)->next = TNode;
            *head = (*head)->next;
            (*head)->key = -333;
            (*head)->next = p;
            break;
        }
        *head = (*head)->next;
    }
    *head = start;
}
 
void Delete(List** begin, int k)
{
    if (*begin == nullptr)
        return;
    List* start1 = *begin;
    if (start1->key == k)
    {
        *begin = start1->next;
        delete start1;
        return;
    }
    List* start2 = start1->next;
    while (start2)
    {
        if (start2->key == k)
        {
            start1->next = start2->next;
            delete start2;
            return;
        }
        start1 = start2;
        start2 = start2->next;
    }
}
void Free(List** begin)
{
    if (*begin == nullptr) return;
    List* start = *begin;
    List* p;
 
    while (start)
    {
        p = start;
        start = start->next;
        delete p;
    }
    *begin = nullptr;
}
Добавлено через 42 секунды
Функция Delete 137 стр
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.02.2017, 22:55

Функция удаления из списка
помогите разобраться почему не работает функция удаления? плз #include &lt;iostream&gt; using...

Функция удаления из двусвязного списка
Создал двусвязный список на основе класса, работают ввод элементов в список и вывод всего списка....

Функция удаления элемента односвязного списка
#include &quot;stdafx.h&quot; #include &lt;iostream&gt; using namespace std; struct A { int key; };

Не работает функция удаления элемента из списка
Двунаправленный линейный список, состоящий из: имени автора, названия книги, года издания и...

Нужна функция для удаления списка
Помогите. Нужна срочно функция для удаления списка.

Функция удаления чётных элементов двусвязного списка
bool delete_even(circle_list *&amp;list) {circle_list *curr=list, *first=list; *temp=NULL; if...


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

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

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