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条回答

      报告相同问题?

      相关推荐 更多相似问题

      问题事件

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

      悬赏问题

      • ¥20 51单片机实训实验报告
      • ¥15 C# 循环读写数据中途突然变慢
      • ¥15 用Java实现双端队列
      • ¥150 ID3决策树实现分类
      • ¥15 multisim10安装后,找不到NI License Manager的程序来安装许可证
      • ¥15 C++银行卡系统 Help!
      • ¥15 R语言数据分析的相关问题
      • ¥15 模型导入SP后贴图纹理只有一个,拆了四张UV的,怎么解决?
      • ¥15 检索带order by 非常慢
      • ¥20 python 爬虫 token 加密方式