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 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序
  • ¥15 onvif+openssl,vs2022编译openssl64
  • ¥15 iOS 自定义输入法-第三方输入法
  • ¥15 很想要一个很好的答案或提示