鱼C论坛

 找回密码
 立即注册
查看: 2213|回复: 0

[技术交流] 构建链表并排序

[复制链接]
发表于 2020-2-27 16:16:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
建立一个链表。将链表排序并输出。
  1. #include <stdio.h>
  2. #include <stdlib.h>

  3. typedef struct Node
  4. {
  5.     int data;
  6.     struct Node *next;
  7. }LNode;

  8. int main()
  9. {
  10.     int n;
  11.     while(scanf("%d", &n) != EOF)
  12.     {
  13.         int i;
  14.         int input;
  15.         LNode *L;
  16.         L = (LNode *)malloc(sizeof(LNode));
  17.         L -> next = NULL;
  18.         LNode *pre = L;
  19.         LNode *p;
  20.         for(i = 0; i < n; i++)
  21.         {
  22.             scanf("%d ", &input);
  23.             p = (LNode *)malloc(sizeof(LNode));
  24.             p -> next = NULL;
  25.             p -> data = input;
  26.             pre -> next = p;
  27.             pre = p;
  28.         }//创建链表
  29.         
  30.         //直接插入排序
  31.         pre = L -> next;p = pre -> next;//pre指向p的前面
  32.         LNode *ppre = L;//插入时与pre用于定位
  33.         while(p != NULL)
  34.         {
  35.             if(p -> data >= pre -> data)
  36.             {
  37.                 pre = p; p = p -> next;
  38.             }
  39.             else
  40.             {
  41.                 LNode *t = pre;
  42.                 pre = ppre -> next;
  43.                 while(p -> data >= pre -> data)
  44.                 {
  45.                     ppre = pre; pre = pre -> next;
  46.                 }
  47.                 t -> next = p -> next;
  48.                 p -> next = pre;
  49.                 ppre -> next = p;
  50.                 p = t -> next;
  51.                 pre = t;
  52.                 ppre = L;
  53.             }
  54.         }
  55.         p = L -> next;
  56.         for(i = 0; i < n; i++)
  57.         {
  58.             printf("%d ", p -> data);
  59.             p = p -> next;
  60.         }
  61.         printf("\n");
  62.     }
  63. }
复制代码
一定要给头结点也分配一个空间,否则会有非法访问的问题。


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-6 20:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表