编写一个函数link_sort(),用链表将数组int a[] = {49, 38, 65, 97, 76, 13, 27} 按升序排序
来源:互联网 发布:360怎么禁止软件联网 编辑:程序博客网 时间:2024/06/05 03:41
//编写一个函数link_sort(),用链表将数组int a[] = {49, 38, 65, 97, 76, 13, 27} 按升序排序#include <stdio.h>#include <stdlib.h>typedef int datatype;typedef struct linklist{ datatype a; struct linklist * next;}link_list,*link_plist;void linklist_init(link_plist *H);void linklist_insert(link_plist p,link_plist new);void linklist_show(link_plist h);void linklist_create(link_plist h);struct linklist *link_sort(link_plist h);int main(void){ link_plist h; linklist_init(&h); linklist_create(h); link_sort(h); linklist_show(h); return 0;}//初始化,传入指针的指针void linklist_init(link_plist *H){ *H = (link_plist)malloc(sizeof(link_list)); if(*H == NULL) { perror("malloc failed"); exit(1); } (*H)->next = NULL;//把头结点的next指针赋值为NULL}//插入void linklist_insert(link_plist p,link_plist new){ new->next = p->next; p->next = new;}//遍历(厉害啊)void linklist_show(link_plist h){ link_plist t; printf("|_|"); for(t=h->next;t!=NULL;t=t->next)//移动t printf("---->%d",t->a); printf("\n");}//创建一个表void linklist_create(link_plist h){ int i; link_plist new,p=h; int a[] = {49, 38, 65, 97, 76, 13, 27} ; for(i=0;i<7;i++) { new = (link_plist)malloc(sizeof(link_list));//用malloc动态分配内存 //malloc之后一般要判断是否申请成功 if(NULL == new) { perror("malloc failed");//用perror exit(1); } new->a = a[i]; //插入 new->next = p->next; p->next = new; //linklist_insert(p,new); p = p->next;//让p始终指向表尾 linklist_show(h); }}struct linklist *link_sort(link_plist h){ //将原链表拆分成两个表:一个空表,一个数据表 link_plist p,t; link_list tmp; p=h->next;//数据表 跳过头节点 t=h->next;//目的是指向链表的尾节点 while(t != NULL)//如果尾节点不为空 就一直遍历下去 { while(p->next != NULL)//如果指向新开辟的结点不为空就一直遍历下去 { p = p->next;//指向下一个新开辟的结点 if(t->a > p->a) { tmp.a = t->a; t->a = p->a; p->a = tmp.a; } } t = t->next; p = t;//保存p在t的下一个节点 } return h;}/*$ ./a.out|_|---->49|_|---->49---->38|_|---->49---->38---->65|_|---->49---->38---->65---->97|_|---->49---->38---->65---->97---->76|_|---->49---->38---->65---->97---->76---->13|_|---->49---->38---->65---->97---->76---->13---->27|_|---->13---->27---->38---->49---->65---->76---->97*/
阅读全文
0 0
- 编写一个函数link_sort(),用链表将数组int a[] = {49, 38, 65, 97, 76, 13, 27} 按升序排序
- 编写函数,将三个int型整数按升序排列
- 编写一个程序,输入两个包含 5 个元素的数组,先将两个数组升序排序,然 后将这两个数组合并成一个升序数组(合并排序)。
- 编写一个函数 求出int数组中最大的数
- 交换排序法,进行int类型数组升序的排列
- 第14 题:题目:输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 14、输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字(14)
- 算法习题14:输入一个已经按升序排序过的数组和一个数字
- No_14输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 输入一个已经按升序排序过的数组和一个数字
- 编写函数,将大小为10的数组里面的整数升序排列,并编写一个函数,使得插入一个数之后,数组里面的整数依然按照升序排列
- int (*a[]) () 指针数组函数
- 数组插入元素按降序/升序排序
- 针对springMVC的理解
- JQuery 对 Select option 的操作
- jquery操作下拉框
- IO流_day18
- 学习感悟
- 编写一个函数link_sort(),用链表将数组int a[] = {49, 38, 65, 97, 76, 13, 27} 按升序排序
- 剑指offer 输出链表倒数第k个结点
- oracle和mysql在创建表、更新表(增加、修改、删除字段)、删除表的区别与联系
- Eclipse 项目导入 Android Studio,依赖项目不让 copy 到 Android Studio 项目
- 二叉树的遍历
- 简易实现后缀表达式
- 快手2017校园招聘_笔试_面试
- 实现checkBox readonly功能的两种方式
- hdu_1102_prime