При выполнении программы вылетает на строчке при вызове структуры(отмечена сбоку комментариями). Помогите понять в чём ошибка.
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
| #include <string> //Подключаем библеотеку для работы со строками
#include <iostream> //Подключаем библиотеку потокового ввода/вывода
#include <locale.h> //Подключаем библиотеку для работы с русским языком
#include <fstream> //Подключаем библиоттеку для работы со строчками из файла
using namespace std; //Использование пространства имен std
struct firstList
{
string numberBus;
string nameDriver;
int numberRoute;
firstList *nextList;
};
firstList *firstHead;
firstList *secondHead;
void firstSet(string nB,string nD){
firstList *p= firstHead;
if(firstHead==NULL){
cout<<"1111111111111";
cout<<nB;
firstHead->numberBus=nB; //Ошибка на этой строчке
cout<<"1111111111111";
firstHead->nameDriver=nD;
cout<<"1111111111111";
firstHead->nextList=NULL;
cout<<"Добавлена запись";
return;
}
while(1){
if((p)->numberBus==nB){
cout<<"Автобус уже есть в данном списке"<<endl;
return;
}
if((p)->nextList==NULL)
break;
(p)=(p)->nextList;
}
(p)->numberBus=nB;
(p)->nameDriver=nD;
(p)->nextList=NULL;
}
void secondSet(string nB,string nD){
firstList* p=secondHead;
if(secondHead==NULL){
(secondHead)->numberBus=nB;
(secondHead)->nameDriver=nD;
(secondHead)->nextList=NULL;
cout<<"Добавлена запись";
return;
}
while(1){
if((p)->numberBus==nB){
cout<<"Автобус уже есть в данном списке"<<endl;
return;
}
if((p)->nextList==NULL)
break;
(p)=(p)->nextList;
}
(p)->numberBus=nB;
(p)->nameDriver=nD;
cout<<"Введите номер маршрута: "<<endl;
cin>>(p)->numberRoute;
(p)->nextList=NULL;
}
void del(firstList* head,string nB){
firstList* p=head;
firstList* buf=NULL;
if((head)->numberBus==nB){
(head) =(p)->nextList;
return;
}
(p)=(head);
while (true) {
buf = p;
if ((p)->nextList == NULL) {
break;
}
(p)=(p)->nextList;
if ((p)->numberBus== nB) {
(p)=(p)->nextList;
(buf)->nextList = (p);
return;
}
}
}
void out(string nB){
firstList* p=firstHead;
while(1){
if((p)->numberBus==nB)
break;
if((p)->nextList==NULL){
cout<<"Автобус не найден в парке"<<endl;
return;
}
(p)=(p)->nextList;
}
secondSet((p)->numberBus,(p)->nameDriver);
del(firstHead,nB);
return;
}
void in(string nB){
firstList* p=secondHead;
while(1){
if((p)->numberBus==nB)
break;
if((p)->nextList==NULL){
cout<<"Автобус не найден в парке"<<endl;
return;
}
(p)=(p)->nextList;
}
firstSet((p)->numberBus,(p)->nameDriver);
del(secondHead,nB);
return;
}
int main() //Начало функции main
{
setlocale(LC_ALL,"rus"); //Выключаем русский язык
string numB;
string nameD;
int i=0,j=0;
cout<<"Создание списка автобусов находящихся на стоянке"<<endl;
while(1){
cout<<i<<". Номер автобуса: ";
cin>>numB;
cout<<" Имя водителя: ";
cin>>nameD;
cout<<endl;
firstSet(numB, nameD);
cout<<"Добавить ещё запись? 1(Да)/0(Нет)"<<endl;
cin>>j;
if(j==0)
break;
i++;
}
cout<<"Меню:"<<endl;
cout<<"1. Выезд автобуса из парка"<<endl;
cout<<"2. Въезд автобуса в парк"<<endl;
cout<<"3. Список автобусов в парке"<<endl;
cout<<"4. Список автобусов на выезде"<<endl;
cin>>j;
switch(j){
case 1: cout<<"Введите номер автобуса который выехал из парка:"<<endl;
cin>>numB;
out(numB);
break;
case 2: cout<<"Введите номер автобуса который заехал в парк:"<<endl;
cin>>numB;
in(numB);
break;
}
} //Конец функции main |
|
Заранее спасибо!
Добавлено через 28 минут
Тупанул, нашёл решение firstHead=new firstList;