链表的构建与排序
来源:互联网 发布:snapgene mac 编辑:程序博客网 时间:2024/06/05 06:56
2.链表的排序:
Description
给出若干个数,将数字存储在链表中,然后使用插入排序,按照升序排列输出数字。
Input
输入一个整数n表示有n个数,接着输入这n个数。
Output
按照升序输出这n个数。
Sample Input
5 3 2 4 5 4
Sample Output
2 3 4 4 5
我没有用插入排序:#include <stdio.h>#include <stdlib.h>#include <malloc.h>typedef struct number{ int m; struct number *next;}NUM;NUM *CreateList(int n);NUM *Sorting(NUM *head);void PrintList(NUM *head);void FreeList(NUM *head);int main(){ NUM *head; int n; scanf("%d", &n); head = CreateList(n); head = Sorting(head); PrintList(head); FreeList(head); return 0;}NUM *CreateList(int n){ NUM *head = NULL, *q, *p; int i; p = (NUM *)malloc(sizeof(NUM)); head = p; q = p; scanf("%d", &q->m); for(i = 1; i < n; i++) { p = (NUM *)malloc(sizeof(NUM)); scanf("%d", &p->m); q->next = p; q = p; } q->next = NULL; return head;}NUM *Sorting(NUM *head){ NUM *q = head->next; NUM *p = head; //NUM *r; int t; if(head->next== NULL) { return head; } while(p->next != NULL) { q = p->next; while(q != NULL) { if(p->m > q->m) { t = p->m; p->m = q->m; q->m = t; } q = q->next; } p = p->next; } return head;}void PrintList(NUM *head){ NUM *q; int flag = 1; q = head; while(q != NULL) { if(flag) { printf("%d", q->m); flag = 0; } else printf(" %d", q->m); q = q->next; } printf("\n"); return;}void FreeList(NUM *head){ NUM *p = head, *q; while(p != NULL) { q = p->next; free(p); p = q; } return;}
链表的插入排序还不会。
0 0
- 链表的构建与排序
- 堆的构建与堆排序
- 单双向链表的构建与遍历
- 链表初尝试-链表的构建与输出-指针
- 链表的构建
- 链表的构建
- 第四题 构建 二元查找树 然后将节点变为排序的链表按序输出
- 指针数组和数组指针/链表的构建和排序
- 链表的合并与排序
- 链表的排序与删除
- 循环链表的构建
- 顺序链表的构建
- 双向链表的构建
- 邻接链表的构建
- 堆的构建以及利用堆排序
- 原型的构建与设计
- 哈希表的构建与查询
- 哈希表的构建与查询
- spring的配置文件中mvc:view-controller path使用方法
- Third Maximum Number
- 全面分析 Spring 的编程式事务管理及声明式事务管理
- 在页面里面播放音频文件
- Python学习笔记 __slots__ 限制类属性
- 链表的构建与排序
- springmvc之视图和视图解析器
- MySql基础1
- 【Codeforces 747 C Servers 】+ 思维 或 优先队列
- Lua编程笔录--Lua初识及语法一(注释,变量命名,全局/局部变量,数据类型)
- Apache禁用测试页(默认页)
- init.rc的触发顺序
- Chapter 1 Introduction
- 搜集的几道C语言和数据库题目