#include <iostream>
using namespace std;
typedef struct Lnode
{
int data;
struct Lnode *next;
}Lnode, *Linklist;
int creat ( Linklist &L )
{
L = new Lnode;
L->next = NULL;
Linklist p, q = L;
while (1)
{
p = new Lnode;
cin >> p->data;
if ( p->data == -1 )
{
return 0;
}
p->next = NULL;
q->next = p;
q = p;
}
}
void cmp ( Linklist &L, int e )
{
Linklist p, q;
p = L;
if ( e >= p->next->data )
{
q = new Lnode;
q->data = e;
q->next =
p->next = q;
p = q;
}
}
void Print (Linklist L)
{
Linklist p = L->next;
while ( p != NULL )
{
cout << p->data;
if ( p->next != NULL)
{
cout << " ";
}
p = p->next;
}
}
int main ()
{
int t;
Linklist L;
creat (L);
while ( 1 )
{
cin >> t;
if ( t == -1 )
{
return 0;
}
else
{
cmp (L, t);
}
}
Print (L);
}
![](https://profile-avatar.csdnimg.cn/fd98048ccdf04475a8a72ad43d1433b8_m0_74017075.jpg!4)
为什么链表输出为空呢
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
4条回答 默认 最新
- MarkHan_ 2023-03-10 09:08关注
该回答引用GPTᴼᴾᴱᴺᴬᴵ
在程序中,链表创建和节点插入操作是正确的。但是,在最后输出链表时,程序中有一个无限循环的 while 循环,因此程序永远不会执行到 Print 函数。为了解决这个问题,可以将 while 循环中的 return 0; 语句移动到 while 循环结束后,也就是 cmp 函数和 Print 函数之间,这样就可以正确输出链表了。另外,在 cmp 函数中,需要正确处理新节点的插入位置,应该在链表中找到合适的位置,然后将新节点插入到链表中。
下面是修改后的代码:
#include <iostream> using namespace std; typedef struct Lnode { int data; struct Lnode *next; }Lnode, *Linklist; int creat ( Linklist &L ) { L = new Lnode; L->next = NULL; Linklist p, q = L; while (1) { p = new Lnode; cin >> p->data; if ( p->data == -1 ) { return 0; } p->next = NULL; q->next = p; q = p; } } void cmp ( Linklist &L, int e ) { Linklist p, q; p = L; while (p->next != NULL && e >= p->next->data) { p = p->next; } q = new Lnode; q->data = e; q->next = p->next; p->next = q; } void Print (Linklist L) { Linklist p = L->next; while ( p != NULL ) { cout << p->data; if ( p->next != NULL) { cout << " "; } p = p->next; } } int main () { int t; Linklist L; creat (L); while ( 1 ) { cin >> t; if ( t == -1 ) { break; } cmp (L, t); } Print (L); return 0; }
这个程序中,cmp 函数通过遍历链表找到合适的插入位置,然后将新节点插入到链表中。Print 函数则用于输出链表的每个节点的值。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 在matlab中Application Compiler后的软件无法打开
- ¥15 想问一下STM32创建工程模板时遇到得问题
- ¥15 Fiddler抓包443
- ¥20 Qt Quick Android 项目报错及显示问题
- ¥15 而且都没有 OpenCVConfig.cmake文件我是不是需要安装opencv,如何解决?
- ¥15 oracleBIEE analytics
- ¥15 H.264选择性加密例程
- ¥50 windows的SFTP服务器如何能批量同步用户信息?
- ¥15 centos7.9升级python3.0的问题
- ¥15 安装CentOS6时卡住