【发布时间】:2023-03-10 12:06:01
【问题描述】:
自周日以来我一直在使用此迭代函数,但没有成功,我想为排序插入创建迭代函数,但经过数小时的节点绘图后,我想我需要一些有关该函数的帮助:
结构声明:
typedef struct E_Type * List;
struct E_Type
{
int data;
struct E_Type* next;
};
功能:
bool insert(List & l, int data) {
while (l != 0) {
for (List p = l; p; p = p->next) {
if (p->data == data)
return false;
}
if (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) {
List new_list = new E_Type;
new_list->data = data;
l->next = new_list;
l = new_list;
return true;
}
}
if (l == 0) {
List new_list = new E_Type;
new_list->data = data;
new_list->next = l;
l = new_list;
return true;
}
}
顺便说一句:这个功能甚至可能吗...有关此插入的所有教程,信息等都带有对下一个数据的递归调用
【问题讨论】:
-
请描述您遇到的问题。
-
为什么你需要在while循环里面放那个for循环。一次性检查还不够吗?
-
在插入大于当前值的值后代码崩溃
-
你的
while没有意义。如果data小于或大于当前节点,则创建new E_Type并返回... -
@tj 我正在检查列表中已经存在的值,如果有的话。返回 false。
标签: c++ linked-list