0 / 0 / 0
Регистрация: 24.12.2017
Сообщений: 11
|
|
1
|
Выдает ошибку, не знаю как исправить
26.05.2018, 15:05. Показов 752. Ответов 1
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
| #include "stdafx.h"
#include <conio.h>
#include <stdio.h>
#include <iostream>
using namespace std;
// Определяется структура. Заказываем необходимый размер
// памяти для записи информации о новом объекте.
struct node
{
int inf; // Поле для записи целых чисел.
node *next; // Поле указателя для записи адресов элементов типа node.
};
void main()
{
node *r, *fr=NULL, *er=NULL; // fr – указатель на головной элемент списка.
// er – указатель на последний элемент списка.
// r – указатель для формирования нового узла списка.
node *rp=NULL;
int a, b; // a – переменная для записи целых чисел.
//clrscr();
FILE *f;
fopen_s(&f,"t.dat", "r");
//============= Начало формирования списка =============
do // Начало цикла ввода чисел из файла.
{
scanf_s("%d", &a); //Ввод числа из файла.
r = new node; //Создаем новый элемент списка.
//========== Выделяем память для нового элемента ==========
r->inf = a; //Инициализируем поле inf нового элемента списка.
r->next = NULL; //Инициализируем поле указателя нового элемента списка.
if (fr == NULL) //Проверяем: список существует или нет. Если fr = NULL, то списка нет.
fr = r; // Поэтому новый элемент объявляем головным.
else // Если список существует, то
er->next = r; // новый элемент присоединяем к списку.
er = r;
} // Новый элемент объявляем последним.
while (!feof(f)); // Конец цикла ввода чисел из файла.
fclose(f); // Конец формирования списка.
//================ Вывод списка на экран =================
cout << "\tСформирован список:\n\n";
r = fr;
while (r != NULL) // Пока не дошли до последнего элемента списка.
{
cout << r->inf << " "; // Вывод информации из поля inf элемента,
// адрес которого находится в указателе r.
r = r->next; // Переход к следующему элементу списка.
// Для этого из поля next текущего элемента списка
// в указатель r пересылаем адрес на следующий элемент.
}
_getch();
cout << "\n\nУдалить узел cо значением k= ";
cin >> a;
r = fr;
if (r->inf == a)
{
cout << "\nудаляется головной узел списка\n";
fr = fr->next; // В указатель на первый элемент пересылаем
// адрес второго элемента списка.
delete r;
}
else
{
while ((r->inf != a) && (r != NULL)) // Поиск элемента, который надо удалить.
{
rp = r; // Запоминаем адрес пройденного элемента.
r = r->next;
} // Переходим на новый элемент.
if (r->inf == a) // Проверяем, найден элемент или нет.
{
cout << " Удаляется узел со значением " << r->inf << "\n\n";
rp->next = r->next; //Поле указателя удаляемого элемента пересылаем в
//поле указателя элемента, который расположен перед
//удаляемым.
delete r;
cout << "\tСписок после удаления элемента: \n\n";
r = fr;
while (r != NULL) // Пока не дошли до последнего элемента списка.
{
cout << r->inf << " "; // Вывод значения текущего элемента списка.
r = r->next; // Переход к следующему элементу списка.
// Для этого из поля next текущего элемента списка
} // в указатель r пересылаем адрес на следующий элемент.
}
else
cout << "\n" << "Узел со значением " << a << " не найден ";
_getch();
}
//==================Вставка нового элемента в список====================
cout << "\n\nВставить в список элемент со значением b= ";
cin >> b;
cout << "\n\nЗа элементом со значением n = ";
cin >> a;
r = fr;
while ((r->inf != a) && (r != NULL))
r = r->next;
if (r->inf == a)
{
rp = new node; // Выделяем память под новый элемент.
rp->inf = b; // Заполняем поле inf нового элемента.
rp->next = r->next; // К новому элементу присоединяем правую часть списка.
r->next = rp; // К левой части списка присоединяем новый элемент списка.
cout << "Cписок после вставки элемента со значением: " << b << "\n";
r = fr;
while (r != NULL)
{
cout << r->inf << " ";
r = r->next;
}
}
else
cout << "\n Элемент списка со значением " << a << " не найден ";
//==============Вставка в список нового головного элемента ===================
cout << "\n\n Введи значение для нового головного элемента n = ";
cin >> a;
rp = new node; // Выделяем память под новый элемент.
rp->inf = a; // Заполняем поле inf нового элемента.
rp->next = fr; // Новый элемент делаем первым.
fr = rp; // В указатель на первый элемент списка пересылаем адрес нового элемента.
cout << "\n Список с новым головным элементом: \n";
r = fr;
while (r != NULL)
{
cout << r->inf << " ";
r = r->next;
}
_getch();
} |
|
0
|