67在不在ᰔᩚ 2022-05-06 09:08 采纳率: 50%
浏览 13
已结题

链表内数据的排序问题

为什么我在sort函数中明明定义了tail=head->next,结果还是调试过程中说tail为空指针?
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
typedef struct inform
{
int num;
struct inform* next;
}*ST,st;
int main(void)
{
void print(ST head);
ST creat(void);
ST sort(ST head, int len);
ST head;
head = creat();
print (head);
sort(head, 5);
print(head);
return 0;
}
ST creat(void)
{
int len;
printf("请输入你想输入的结点个数:len =");
scanf_s("%d",&len);
printf("\n");
int i, val;
ST head = (ST)malloc(sizeof(st));
if (NULL == head)
{
printf("分配失败");
exit(-1);
}
ST tail = head;
tail->next = NULL;
for (i = 0; i < len; i++)
{
printf("请输入第 %d 个学生的信息:",i+1);
scanf_s("%d",&val);
printf("\n");
ST pnew = (ST)malloc(sizeof(st));
pnew->num = val;
tail->next = pnew;
pnew->next = NULL;
tail = pnew;
}
return head;
}
void print(ST head)
{
ST tail;
int i = 1;
tail = head->next;
while (tail != NULL)
{

    printf("第 %d 个学生的信息是:",i);
    printf("%d \n",tail->num );
    tail = tail->next;
    i++;
}
return;

}
ST sort(ST head , int len)
{
int i, j;
ST dupli,tail;
tail = head->next;
dupli = tail->next;
for (i = 0; i < len; i++,tail = tail->next )
{

    for (j = 0;j < len - i; j++,dupli = dupli->next )
    {
        if (dupli->next == NULL)
            break;
        if (dupli->num  > tail->num)
        {
            int t = tail->num ;
            tail->num = dupli->num;
            dupli->num = t;
        }
        tail = tail->next;
    }
}
return head;

}

  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-05-06 09:58
    关注

    数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 5月16日
  • 已采纳回答 5月8日
  • 创建了问题 5月6日

悬赏问题

  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错
  • ¥15 coze 的插件输入飞书多维表格 app_token 后一直显示错误,如何解决?
  • ¥15 vite+vue3+plyr播放本地public文件夹下视频无法加载
  • ¥15 c#逐行读取txt文本,但是每一行里面数据之间空格数量不同
  • ¥50 如何openEuler 22.03上安装配置drbd
  • ¥20 ING91680C BLE5.3 芯片怎么实现串口收发数据
  • ¥15 无线连接树莓派,无法执行update,如何解决?(相关搜索:软件下载)
  • ¥15 Windows11, backspace, enter, space键失灵