以下是在正向打印LinkedList的函数的代码。
void DLinkedList::printForwards(int age)
{
DNode * current;
current = header->next;
while (current != NULL)
{
if (current->elem->getAge() <= age) {
cout << current->elem->getName() << ", ";
}
current = current->next;
}
cout << endl;
}
这是类DNode
typedef Person* Elem;
class DNode { // doubly linked list node
private:
Elem elem; // node element value
DNode* prev; // previous node in list
DNode* next; // next node in list
friend class DLinkedList; // allow DLinkedList access
};
这是班级人员
class Person {
public:
Person(int age, string first, string last){
setAge(age);
setFirstname(first);
setLastName(last);
}
void setAge(int age){
this->age = age;
}
void setFirstname(string first){
firstName = first;
}
void setLastName(string last){
lastname = last;
}
int getAge(){
return age;
}
string getName(){
return firstName + " " + lastname;
}
private:
string firstName, lastname;
int age;
};
这是我的主要
int main(){
DLinkedList list;
Person * ryan= new Person(19, "Ryan", "Temple");
list.addFront(ryan);
list.printForwards(100);
}
这行代码给程序带来了麻烦。
if (current->elem->getAge() <= age)
elem的值设置为NULL。 当初始化电流时,它会指向正确的节点。 但是,在if语句中访问current会将其值设置为NULL。
有人可以帮帮我吗?
编辑: 这是addFront函数
void DLinkedList::add(DNode* v, Elem& e) {
DNode* u = new DNode;
u->elem = e; // create a new node for e
u->next = v; // link u in between v
u->prev = v->prev; // ...and v->prev
v->prev->next = u;
v->prev = u;
}
添加前面
void DLinkedList::addFront(Elem& e) // add to front of list
{
add(header->next, e);
}
答案 0 :(得分:0)
编辑:
我的回答不正确。还有其他事情正在发生但没有更多的源代码,我们只能推测。由于这是接受的答案,我无法删除它。因此,我删除了原始内容,使其不会混淆可能偶然发现此问题的其他人。