c语言链表里最大数值,关于C语言链表插入数值的问题

满意答案

00e27ab806e4881f8254fe7ae8741834.png

uk1011

2019.04.05

00e27ab806e4881f8254fe7ae8741834.png

采纳率:54%    等级:12

已帮助:11322人

首先,主函数中,“请输入插入的数据”那里scanf应该是&b,这是引发崩溃的原因。

其次,insert函数的目的应该是想插入数据后仍是有序链表。但你的insert函数逻辑太乱,有些不必要的判断,我修正了你的代码,贴给你看看。(虽然你insert是想保证有序,但你在创建的时候没有保证有序,所以最终结果不一定是有序。例如,创建 1,5,2,插入3,最后输出的是 1,3,5,2)

代码修改:

scanf("%d", &b);

重写了insert函数,简化逻辑;

动态分配的内存记得释放,增加freeNode释放空间

#include 

#include 

struct link

{

int data;

struct link *next;

};

struct link *add(struct link *head);//创建链表

void display(struct link *head);//输出数据

struct link *insert(struct link *head, int b); //插入新节点

void freeNode(struct link *);//释放空间

int main()

{

char c;

struct link *head = NULL;

printf("要创建一个链表吗?");

scanf(" %c", &c);

while (c == 'y' || c == 'Y')

{

head = add(head);

printf("要继续创建节点吗?");

scanf(" %c", &c);

}

display(head);

int b;

printf("输入插入的数据");

scanf("%d", &b);

head = insert(head, b);

display(head);

freeNode(head);

}

仅供参考试

00分享举报

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值