【发布时间】:2019-06-29 13:33:42
【问题描述】:
我正在尝试学习一些关于单链表的基础知识,所以我想到了创建一些代码。可悲的是,我已经让构造函数跟随。
到目前为止,我已经创建了我想要的所有方法。不幸的是,似乎我的插入不起作用,所以我什至无法检查其他方法是否有效。插入方法的ofc作用是将数字添加到排序列表L中。这个数字应该放在第一个数字之前,如果它更大或者放在列表的末尾,如果没有这个数字。
#include <iostream>
#include <cassert>
using namespace std;
struct lnode
{
int key;
lnode* next;
lnode(int k, lnode* n=nullptr):key(k),next(n){}
};
void insert( lnode* &L, int x)
{
while(L)
{
if(x >= L->key)
{
L = L->next;
}
else
{
lnode* temp = L;
L = new lnode(x, nullptr);
L->next = temp;
break;
}
}
}
int main()
{
lnode* t = nullptr;
insert(t,3);
insert(t,4);
insert(t,1);
insert(t,7);
insert(t,-4);
insert(t,9);
insert(t,2);
while(L) {
std::cout << L->key << " ";
}
}
我期待什么?我的期望是看到我列表中的元素。这一刻什么都没有。没有错误,没有结果。
【问题讨论】:
-
你确定代码可以编译吗?
-
@ArdaAytekin 它没有
-
这段代码还能编译成功吗? L 在主函数中声明在哪里,以便在 while(L) 中使用它?
-
如果您的代码无法编译,应该会出现错误消息。当你试图编译或运行你的程序时,一定会发生一些事情,无论它是挂起、崩溃还是立即退出而没有任何输出。如果绝对没有任何反应,您需要修复您的 IDE。
-
确实如此。这很奇怪。至少使用代码::块。哦,是的,将 L 与 t 交换并编译,但我正在谈论输出。什么都没有。
标签: c++ algorithm c++11 data-structures