我是我的第一个 C++ 类(class)的编程学生,最近我们学习了链表,我们得到了一个实现一个简单列表的作业。除了我的 pop_back()
函数之外,我已经编码了所有内容,该函数应该返回一个指向需要在 Node
中删除的 Main()
的指针。实际函数中不需要删除Node
。所以我的问题是:
您愿意为我的 pop_back()
函数指出正确的方向吗?另外,如果你发现我做错了什么,请告诉我。
此外,此链表仅用于处理字符串。在本例中,是一个杂货 list ,因此有一个字符串表示商品的数量 (1,2),还有一个表示商品类型的字符串。 (牛奶、鸡蛋等)
下面我已经包含了我的 List 和 Node 类实现,因此您可以了解我到目前为止所做的工作。
Node.cpp
Node::Node(void)
{
descrip = " ";
quantity = " ";
previous = NULL;
next = NULL;
}
Node::Node(string q, string d)
{
descrip = d;
quantity = q;
previous = NULL;
next = NULL;
}
Node* Node::GetNext()
{
return next;
}
Node* Node::GetPrevious()
{
return previous;
}
void Node::SetNext(Node * setter)
{
next = setter;
}
void Node::SetPrevious(Node * setter)
{
previous = setter;
}
列表.cpp
List::List(void)
{
first = NULL;
last = NULL;
numNodes = 0;
}
Node* List::GetFirst()
{
return first;
}
Node* List::GetLast()
{
return last;
}
void List::SetFirst(Node* setter)
{
first = setter;
}
void List::SetLast(Node* setter)
{
last = setter;
}
int List::GetNumNodes()
{
return numNodes;
}
void List::push_front(Node* item)
{
if (first == NULL)
{
first = item;
last = item;
}
else
{
Node* pFirst = first;
item->SetNext(pFirst);
first = item;
numNodes++;
}
}
void List::push_back(Node * item)
{
if (last == NULL)
{
first = item;
last = item;
}
else
{
last->SetNext(item);
last = item;
numNodes++;
}
}
Node* List::pop_front()
{
Node* temp = first;
first = first->GetNext();
if (first == NULL)
{
temp = first->GetNext();
first = p;
}
if (first == NULL)
{
last = NULL;
}
if (numNodes > 0)
{
numNodes--;
}
return temp;
}
Node* List::pop_back() // this whole function may be wrong, this is just my attempt at it
{
Node* temp;
temp = first;
while((temp->GetNext()) != NULL)
// im stuck here
}
最佳答案
因此,如果我理解这一点,您只是想遍历您的链表,直到到达链表中的最后一个节点并将指针返回给它?
我很确定你有什么可以做到,除了
Node* List::pop_back() // this whole function may be wrong, this is just my attempt at it
{
Node* temp;
temp = first;
while(temp->GetNext() != NULL)
{
temp = temp->GetNext();
}
return temp;
}
因此,如果我读对了,它将不断循环,直到它到达后面没有一行的节点,然后返回它。
关于c++ - C++ 中的简单链表实现,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2277918/