C++ 打印单链表的头和尾
下面我有一个单链表,它根据导演的名字按字母顺序打印出电影对象的列表。我试图打印列表中的第一个元素(头部)和最后一个元素(尾部),但我很难弄清楚如何打印。我试图打印下面的头,但出于某种原因,它只是打印内存地址,而不是实际的对象值 至于尾部,我不太确定如何访问列表中的最后一个元素,我想知道是否有人可以提供指导或将我推向正确的方向 编辑:实际上我意识到我应该调用head->data->print(),就像我对当前节点所做的那样来打印头部。我只需要弄清楚如何在我的列表中保持一个头部和尾部,而不仅仅是头部 List.ccC++ 打印单链表的头和尾,c++,memory,linked-list,nodes,singly-linked-list,C++,Memory,Linked List,Nodes,Singly Linked List,下面我有一个单链表,它根据导演的名字按字母顺序打印出电影对象的列表。我试图打印列表中的第一个元素(头部)和最后一个元素(尾部),但我很难弄清楚如何打印。我试图打印下面的头,但出于某种原因,它只是打印内存地址,而不是实际的对象值 至于尾部,我不太确定如何访问列表中的最后一个元素,我想知道是否有人可以提供指导或将我推向正确的方向 编辑:实际上我意识到我应该调用head->data->print(),就像我对当前节点所做的那样来打印头部。我只需要弄清楚如何在我的列表中保持一个头部和尾部,而不仅仅是头部
void List::print() const{
Node* current = head;
while (current != NULL) {
current->data->print();
current = current->next;
}
cout << "HEAD: \n" << head->data->print() << endl; //prints memory address?
// cout << "TAIL: \n" << head << endl;
}
实际上有两种选择:
如果您有一个很长的列表,那么第1点将是有利的。如果在本例中使用第2点,实际上必须遍历整个列表。然而,无论您选择哪种方案,我建议您从实施方案2开始。我认为这个选项会给你一些很好的洞察力。“我只需要弄清楚如何维护尾部。”这与你之前的问题“如何访问列表中的最后一个元素”完全不同。具体点。问题是,您不知道如何找到尾部,或者您不知道如何将尾部成员添加到列表类以维护尾部。两者都不难,但一个很琐碎,另一个更复杂。我需要打印列表的开头和结尾。通过这样做,我试图维护一个尾部来跟踪列表中的最后一个元素,以便最终打印出尾部。我想我的问题是如何调整我的链表来跟踪一个头部和尾部,而不仅仅是头部
#ifndef LIST_H
#define LIST_H
#include "Movie.h"
class List{
class Node{
public:
Movie* data;
Node* next;
};
public:
List();
~List();
void add(Movie*);
void print() const;
private:
Node* head;
};
#endif