【发布时间】:2013-09-10 22:35:45
【问题描述】:
对于家庭作业,我需要删除该数字传入的所有相似节点。例如,如果我在列表中
3 5 5 4
5's 将从链表中删除,我将结束
3 4
我们不允许使用这个类的std库,这是头文件
namespace list_1
{
class list
{
public:
// CONSTRUCTOR
list( );
// postcondition: all nodes in the list are destroyed.
~list();
// MODIFICATION MEMBER FUNCTIONS
//postcondition: entry is added to the front of the list
void insert_front(const int& entry);
//postcondition: entry is added to the back of the list
void add_back(const int& entry);
// postcondition: all nodes with data == entry are removed from the list
void remove_all(const int& entry);
// postcondition: an iterator is created pointing to the head of the list
Iterator begin(void);
// CONSTANT MEMBER FUNCTIONS
// postcondition: the size of the list is returned
int size( ) const;
private:
Node* head;
};
}
我可以理解如何删除列表的前面和后面。但是由于某种原因,我无法绕过列表并删除所有传入的数字。任何有帮助!谢谢
编辑以包含 Node.h
#pragma once
namespace list_1
{
struct Node
{
int data;
Node *next;
// Constructor
// Postcondition:
Node (int d);
};
}
【问题讨论】:
-
在一张纸上画一幅画:每个节点都用一个方框来表示。将每个框拆分为成员变量。从每个成员绘制一个箭头,表示指向它所指向的框的指针。您可以用手指跟随绘图上的箭头来浏览列表:只需让程序做同样的事情!
-
“相似”还是“相同值”?了解其中的区别很重要。例如,32 可能与 31 和 33“相似”,但并不相同。或者“阅读”这个词(过去时)听起来与“红色”的颜色非常相似。但拼写不同。
-
对不起,如果它是相同的值,那么它应该被删除。目前正在尝试绘制图片。
-
我注意到您有一个名为 head 的 Node*。能否请您发布 Node 类的标题?
-
你能遍历列表吗?您可以删除列表中间的节点吗?你能比较两个节点吗?你能有一个指向一个节点的指针并在你从那里迭代到最后时将它保留在那里吗?开发这些并单独测试它们,然后将它们组合在一起就完成了。