【发布时间】:2012-11-23 20:38:31
【问题描述】:
我正在尝试实现一个 bool 函数,它接收 List 和 Int 作为参数,如果 int 在列表中不存在,则应该插入 int 并返回 true,如果 int 已经存在则返回 false,我已经工作了几个小时使用这个函数,并且 if-else 语句可以插入排序的 int,问题(和崩溃)是如何检查值是否已经存在并返回 false,这是我的函数: 结构声明
typedef struct E_Type * List;
struct E_Type
{
int data;
List next = 0;
};
和功能
bool insert(List & l, int data)
{
List current = l;
do{//check if the int is already in the list
current->data;
current = current->next;
//return false;
}while (current->data == data);
if (l == 0 || l->data > data){
List new_list = new E_Type;
new_list->data = data;
new_list->next = l;
l = new_list;
return true;
}
else if(l->data < data){
insert(l->next, data);
return true;
}
}
【问题讨论】:
-
除非这是您需要自己编写所有代码的家庭作业,否则请考虑使用
std::set,它已经几乎完全符合您的要求. -
是的,我知道设置,但这是一门课程的一种家庭作业/作业/实验室
-
好吧 -- 看一下代码,我没有看到任何看起来像检查
next指针是否为非空的东西,这通常是遍历链表所需要的。跨度>
标签: c++ linked-list