【发布时间】:2013-04-24 06:29:08
【问题描述】:
我有一个基本的链表问题,我试图在下面解决。对于我的方法、算法的正确性(甚至编码风格),我将不胜感激。该问题需要一个函数来删除循环链表中所有出现的 int 并返回链表中的任何节点或 NULL(当链表为空时)。
这是我目前拥有的一些 C++ 代码:
struct Node{
Node* next;
int data;
};
Node* deleteNode(Node* &node, int num){
if(!node){
return NULL;
}
Node* given = node;
Node* del;
while(node->next != given){
if(node->next->data == num){
del = node->next;
node->next = node->next->next;
delete del;
}
node = node->next;
}
//Check if the first node needs to be deleted, with variable node pointing to last element
if(given->data == num){
node->next = given->next;
delete given;
}
return node;
}
【问题讨论】:
-
您要求样式 cmets,所以这里是一个。您应该创建一个 List 类,并且 deleteNode 应该是该类的私有成员。您应该考虑您的代码呈现给代码用户的界面。 List 类的用户不需要或想了解节点,他们只想在列表中添加和删除项目。查看 std::list 以获得良好设计的示例。
标签: c++ linked-list circular-list