19 / 1 / 2
Регистрация: 25.06.2014
Сообщений: 90
1

В связанных списках ошибка - параметры конструктора не задекларированы

29.11.2014, 12:25. Показов 410. Ответов 1
Метки нет (Все метки)

На 26 строке выдает ошибку - PersonLinkedList.cpp\unorderedLinkedList.h|26|erro r: 'first' was not declared in this scope|
А также не узнаёт count и last - не поможете?

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
#ifndef UNORDEREDLINKEDLIST_H_INCLUDED
#define UNORDEREDLINKEDLIST_H_INCLUDED
 
#include "linkedList.h"
 
 
using namespace std;
 
template <class Type>
class unorderedLinkedList: public linkedListType<Type>
{
public:
    bool search(const Type& searchItem) const;
    void insertFirst(const Type& newItem);
    void insertLast(const Type& newItem);
    void deleteNode(const Type& deleteItem);
};
 
 
template <class Type>
bool unorderedLinkedList<Type>::search(const Type& searchItem) const
{
    nodeType<Type> *current; //pointer to traverse the list
    bool found = false;
 
    current = first; //set current to point to the first
                     //node in the list
 
    while (current != NULL && !found)    //search the list
        if (current->info == searchItem) //searchItem is found
            found = true;
        else
            current = current->link; //make current point to
                                     //the next node
    return found;
}
 
template <class Type>
void unorderedLinkedList<Type>::insertFirst(const Type& newItem)
{
    nodeType<Type> *newNode; //pointer to create the new node
 
    newNode = new nodeType<Type>; //create the new node
 
    newNode->info = newItem;    //store the new item in the node
    newNode->link = first;      //insert newNode before first
    first = newNode;            //make first point to the
                                //actual first node
    count++;                    //increment count
 
    if (last == NULL)   //if the list was empty, newNode is also
                        //the last node in the list
        last = newNode;
}//end insertFirst
 
template <class Type>
void unorderedLinkedList<Type>::insertLast(const Type& newItem)
{
    nodeType<Type> *newNode; //pointer to create the new node
 
    newNode = new nodeType<Type>; //create the new node
 
    newNode->info = newItem;  //store the new item in the node
    newNode->link = NULL;     //set the link field of newNode
                              //to NULL
 
    if (first == NULL)  //if the list is empty, newNode is
                        //both the first and last node
    {
        first = newNode;
        last = newNode;
        count++;        //increment count
    }
    else    //the list is not empty, insert newNode after last
    {
        last->link = newNode; //insert newNode after last
        last = newNode; //make last point to the actual
                        //last node in the list
        count++;        //increment count
    }
}//end insertLast
 
 
template <class Type>
void unorderedLinkedList<Type>::deleteNode(const Type& deleteItem)
{
    nodeType<Type> *current; //pointer to traverse the list
    nodeType<Type> *trailCurrent; //pointer just before current
    bool found;
 
    if (first == NULL)    //Case 1; the list is empty.
        cout << "Cannot delete from an empty list."
             << endl;
    else
    {
        if (first->info == deleteItem) //Case 2
        {
            current = first;
            first = first->link;
            count--;
            if (first == NULL)    //the list has only one node
                last = NULL;
            delete current;
        }
        else //search the list for the node with the given info
        {
            found = false;
            trailCurrent = first;  //set trailCurrent to point
                                   //to the first node
            current = first->link; //set current to point to
                                   //the second node
 
            while (current != NULL && !found)
            {
                if (current->info != deleteItem)
                {
                    trailCurrent = current;
                    current = current-> link;
                }
                else
                    found = true;
            }//end while
 
            if (found) //Case 3; if found, delete the node
            {
                trailCurrent->link = current->link;
                count--;
 
                if (last == current)   //node to be deleted
                                       //was the last node
                    last = trailCurrent; //update the value
                                         //of last
                delete current;  //delete the node from the list
            }
            else
                cout << "The item to be deleted is not in "
                     << "the list." << endl;
        }//end else
    }//end else
}//end deleteNode
 
#endif // UNORDEREDLINKEDLIST_H_INCLUDED
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.11.2014, 12:25
Ответы с готовыми решениями:

Подмена значений в связанных списках
Привет! Строю большую форму, возник такой вопрос - есть 2 списка, второй подгружается в...

Выбор данных в связанных списках Улица, Дом, Квартира
Всем привет! Помогите, пожалуйста, реализовать выборку данных. На форме Выборка с полями...

Сравните время работы задачи Иосифа Флавия, используя реализацию: а) на массивах; б) на связанных списках
Сравните время работы задачи Иосифа Флавия, используя реализацию: а) на массивах; б) на...

Параметры конструктора
Доброй ночи всем. Учусь, набираю, понимаешь, себе код.... и вдруг такая непонятка!!!!!!!!!! ...

1
19 / 1 / 2
Регистрация: 25.06.2014
Сообщений: 90
29.11.2014, 12:28  [ТС] 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
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
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
#ifndef LINKEDLIST_H_INCLUDED
#define LINKEDLIST_H_INCLUDED
 
#include <iostream>
#include <cassert>
#include "unorderedLinkedList.h"
 
using namespace std;
 
//Definition of the node
 
template <class Type>
struct nodeType
{
    Type info;
    nodeType<Type> *link;
};
 
template <class Type>
class linkedListIterator
{
public:
   linkedListIterator();
 
   linkedListIterator(nodeType<Type> *ptr);
 
   Type operator*();
 
   linkedListIterator<Type> operator++();
 
   bool operator==(const linkedListIterator<Type>& right) const;
 
   bool operator!=(const linkedListIterator<Type>& right) const;
 
 
private:
   nodeType<Type> *current;
};
 
template <class Type>
linkedListIterator<Type>::linkedListIterator()
{
    current = NULL;
}
 
template <class Type>
linkedListIterator<Type>::
                  linkedListIterator(nodeType<Type> *ptr)
{
    current = ptr;
}
 
template <class Type>
Type linkedListIterator<Type>::operator*()
{
    return current->info;
}
 
template <class Type>
linkedListIterator<Type> linkedListIterator<Type>::operator++()
{
    current = current->link;
 
    return *this;
}
 
template <class Type>
bool linkedListIterator<Type>::operator==
               (const linkedListIterator<Type>& right) const
{
    return (current == right.current);
}
 
template <class Type>
bool linkedListIterator<Type>::operator!=
                 (const linkedListIterator<Type>& right) const
{    return (current != right.current);
}
 
 
//*****************  class linkedListType   ****************
 
template <class Type>
class linkedListType
{
public:
    const linkedListType<Type>& operator=
                         (const linkedListType<Type>&);
 
    void initializeList();
 
    bool isEmptyList() const;
 
    void print() const;
 
    int length() const;
 
    void destroyList();
 
    Type front() const;
 
    Type back() const;
 
    virtual bool search(const Type& searchItem) const = 0;
 
    virtual void insertFirst(const Type& newItem) = 0;
 
    virtual void insertLast(const Type& newItem) = 0;
 
    virtual void deleteNode(const Type& deleteItem) = 0;
 
    linkedListIterator<Type> begin();
 
    linkedListIterator<Type> end();
 
    linkedListType();
 
    linkedListType(const linkedListType<Type>& otherList);
 
    ~linkedListType();
 
protected:
    int count;
    nodeType<Type> *first;
    nodeType<Type> *last;
private:
    void copyList(const linkedListType<Type>& otherList);
 
};
 
 
template <class Type>
bool linkedListType<Type>::isEmptyList() const
{
    return(first == NULL);
}
 
template <class Type>
linkedListType<Type>::linkedListType()
{
    first = NULL;
    last = NULL;
    count = 0;
}
 
template <class Type>
void linkedListType<Type>::destroyList()
{
    nodeType<Type> *temp;
    while (first != NULL)
    {
        temp = first;
        first = first->link;
        delete temp;
    }
    last = NULL;
 
    count = 0;
}
 
template <class Type>
void linkedListType<Type>::initializeList()
{
    destroyList();
}
 
template <class Type>
void linkedListType<Type>::print() const
{
    nodeType<Type> *current;
 
    current = first;
 
    while (current != NULL) {
        cout << current->info << " ";
        current = current->link;
    }
}
 
template <class Type>
int linkedListType<Type>::length() const
{
    return count;
}  //end length
 
template <class Type>
Type linkedListType<Type>::front() const
{
    assert(first != NULL);
 
    return first->info; //return the info of the first node
}//end front
 
template <class Type>
Type linkedListType<Type>::back() const
{
    assert(last != NULL);
 
    return last->info; //return the info of the last node
}//end back
 
template <class Type>
linkedListIterator<Type> linkedListType<Type>::begin()
{
    linkedListIterator<Type> temp(first);
 
    return temp;
}
 
template <class Type>
linkedListIterator<Type> linkedListType<Type>::end()
{
    linkedListIterator<Type> temp(NULL);
 
    return temp;
}
 
template <class Type>
void linkedListType<Type>::copyList
                   (const linkedListType<Type>& otherList)
{
    nodeType<Type> *newNode; //pointer to create a node
    nodeType<Type> *current; //pointer to traverse the list
 
    if (first != NULL) //if the list is nonempty, make it empty
       destroyList();
 
    if (otherList.first == NULL) //otherList is empty
    {
        first = NULL;
        last = NULL;
        count = 0;
    }
    else
    {
        current = otherList.first; //current points to the
                                   //list to be copied
        count = otherList.count;
 
            //copy the first node
        first = new nodeType<Type>;  //create the node
 
        first->info = current->info; //copy the info
        first->link = NULL;        //set the link field of
                                   //the node to NULL
        last = first;              //make last point to the
                                   //first node
        current = current->link;     //make current point to
                                     //the next node
 
           //copy the remaining list
        while (current != NULL)
        {
            newNode = new nodeType<Type>;  //create a node
            newNode->info = current->info; //copy the info
            newNode->link = NULL;       //set the link of
                                        //newNode to NULL
            last->link = newNode;  //attach newNode after last
            last = newNode;        //make last point to
                                   //the actual last node
            current = current->link;   //make current point
                                       //to the next node
        }//end while
    }//end else
}//end copyList
 
template <class Type>
linkedListType<Type>::~linkedListType() //destructor
{
   destroyList();
}//end destructor
 
template <class Type>
linkedListType<Type>::linkedListType
                      (const linkedListType<Type>& otherList)
{
    first = NULL;
    copyList(otherList);
}//end copy constructor
 
         //overload the assignment operator
template <class Type>
const linkedListType<Type>& linkedListType<Type>::operator=
                      (const linkedListType<Type>& otherList)
{
    if (this != &otherList) //avoid self-copy
    {
        copyList(otherList);
    }//end else
 
     return *this;
}
 
 
#endif // LINKEDLIST_H_INCLUDED
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.11.2014, 12:28
Помогаю со студенческими работами здесь

Параметры конструктора по умолчанию
Привет! Подскажите, что я делаю не так. Создал класс Monstr, как в книжке написано, вот исходники:...

Функция не использует параметры конструктора
Engine.h namespace Engine { class ICE { public: std::vector&lt;int&gt; M_init;...

Задать параметры конструктора DateTime в произвольном порядке
Тут написано, что создать значение DateTime можно различными способами. Например, так: DateTime...

string обьявленый в классе передать в параметры конструктора
class String{ char str; string str2; public: String(char string){ strcpy(str,string);...


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

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

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