精华内容
下载资源
问答
  • C语言链表排序

    2014-10-08 09:21:03
    C语言 链表排序,源代码,代码清晰,适合初学者下载
  • c语言链表排序

    2012-02-07 18:30:28
    c语言链表排序的方法,包括选择排序,直接插入排序,冒泡排序等
  • Q715372 C语言链表排序

    2018-12-01 13:58:35
    Q715372 C语言链表排序 https://ask.csdn.net/questions/715372 问题的回答。
  • c语言链表排序问题(非交换成员)struct scool student{char name[10];int score;}从键盘获取输入,创建这种一个链表。然后根据名次值进行逆序排序(交换链表中结构体位置而不是成员值)怎么实现。我通过冒泡排序for(one...

    50af78e18659b79d5a213449406e90b3.png

    c语言链表排序问题(非交换成员)

    struct scool student{

    char name[10];

    int score;

    }

    ef51c0f380615533401969f5c2f3a35f.png

    从键盘获取输入,创建这种一个链表。

    然后根据名次值进行逆序排序(交换链表中结构体位置而不是成员值)怎么实现。我通过冒泡排序for(one=head;one!=NULL;one=one->next)

    for(two=one->next;two!=NULL;two=two->next)

    {if()

    {......}

    8de716c77aa003f164b6fb1791bd377a.png

    }

    一直实现不了c语言链表冒泡排序,不知道哪里出问题。

    ||收藏||

    4831f0c0791112a7df86bd27ba983611.png

    1个回答

    5b26e0369ca13289125a46347a609577.png

    按赞数排序

    如果是单向链表,你必须存取需要交换的两个元素的前驱节点。

    假设应该交换的是p qc语言链表冒泡排序,前驱分别是a b,那么交换的代码如下

    node * t = b->next;

    b ->next = a ->next;

    1a35e1149e552ae81f3797cc681f05fc.png

    a -> next = t;

    t = p->next;

    p->next = q->next;

    q->next = t;

    ||

    f5a443ad5c89cf67d9755a83e015674c.gif

    如果想补充问题,请编辑问题;问题解决后请采纳答案。

    抄袭、复制答案,以超过刷声望分或其它目的的行为,在CSDN问答是严格禁止的,一经发现立即封号。是之后呈现真正的技术了!

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-137396-1.html

    展开全文
  • 概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。...liujiejieliu...

    9a8203358e79d277ff6b34c46b81f884.png

    概述排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。我们这里说说八大排序就是内部排序。...

    310c57b6a6f30b9126fdc6b2dbeb44b4.gif

    liujiejieliu1234

    2015年04月22日 15:06

    7990

    不知道大家喜不喜欢打扑克?哈哈,我就挺喜欢的,尤其是三人斗地主,很喜欢.现在我来描述一幅画面看看大家熟不熟悉.我抓牌的习惯是,在抓牌的时候,我要看着我的牌,看看牌的状况,有没有大小鬼,有几个2,...

    808e81cf4cf45e5a6452314a706d0cfd.png

    lchad

    2015年02月06日 00:44

    2046

    直接插入排序也是一种较简单的排序算法,原理就是从第二个数开始抽出一个数,与前面的数进行比较,在合适的地方插入,形成有序数列,随着被抽出的数据的右移,整个数组将会被排序。代码如下:#include v...

    37584545cd38fb57ab1bcd217a6887c4.gif

    grom_Hellscream

    b7013cf85dabb33d6ec9d12fe8f542e5.png

    2016年11月27日 22:27

    177

    /*对于9,2,7,19,100,97,63,208,55,78这组数,第一个数9前面没有,不做操作*当第一个数完后,剩下的数就是待排序的数,我们将要从除去9开始的书中选出一个插入到前面合适的位置,...

    62146599ca8ce0462a6e61285ec0f18c.gif

    gyjn2017

    2013年06月05日 17:38

    338

    /**直接插入排序第一次是假设数组第一个元素是有序区,剩下的元素是*无序区,每次将无序区的第一个元素与有序区的每一个元素从后向前比较*找到其插入的合适位置,将其插入到有序区*/#inclu...

    aba1f41ccbb0d163a67f57bb6684f50f.gif

    lostinai

    2013年03月20日 21:56

    480

    直接插入排序是是一种稳定的排序,其算法简便,适用于顺序结构和链式结构,更适合于基本有序(正序)的情况。c语言链表排序算法c语言链表排序算法其空间复杂度为O(1),时间复杂度为O(n2)。下面是实现算法:先是预定义和类型定义:ty...

    ced79968454843a649fa80c001a3457d.png

    0dd29a725464a27a0b5485e28e045ee0.png

    ZGUIZ

    2017年01月22日 11:34

    1378

    数据结构排序实验,共有冒泡,选择,插入,快速排序四种排序方法。c语言代码详细实现和解释。...

    c6eb737c4decfef5b6f45740f2f67936.png

    xuqinggangsls

    2014年12月11日 19:05

    1224

    直接插入排序方法:仅有一个记录的表总是有序的,因此,对于有n个记录的表,可以从第二个记录开始直到第n个记录逐个有序的向有序表中进行插入操作,从而得到n个记录按关键字有序的表。实现一个直接插入排序的...

    4ebb2abeb189a396f5ca2abaf26f2ece.png

    TECH_PRO

    2017年06月07日 07:50

    本文来自电脑杂谈,转载请注明本文网址:

    http://www.pc-fly.com/a/jisuanjixue/article-60700-1.html

    展开全文
  • C语言链表排序操作

    2017-06-29 13:41:43
    链表创建、排序操作
  • C语言 链表排序-升序

    千次阅读 2018-07-18 19:55:38
    现在已经给出结点定义和程序框架,包括 main 函数和链表输出函数 outlist,请编写函数 sortlist 完成链表排序功能。 函数原型 sortlist( PNODE h, int num ) 的参数含义如下:  h :单链表的头指针 num :新输入...

    题目

    对于输入的 n 个数据 num 进行排序,要求将输入的数据按 num升序建立带有表头结点的链表,且链表中不能有重复的数据。现在已经给出结点定义和程序框架,包括 main 函数和链表输出函数 outlist,请编写函数 sortlist 完成链表排序功能。


    函数原型 sortlist( PNODE h, int num ) 的参数含义如下: 
    h :单链表的头指针
    num :新输入的需要插入链表中的数据

    #include <stdio.h>
    #include <stdlib.h>
    
    struct node
    {
    	int data;
    	struct node * next;
    };
    
    typedef struct node NODE;
    typedef struct node * PNODE;
    
    void outlist( PNODE );
    void sortlist( PNODE , int );
    
    main()
    {
    	int num = 1;
    	PNODE head;
    	
    	head = ( PNODE ) malloc ( sizeof(NODE) );
    	head->next = NULL;
    	head->data = -1;
    	
    	while ( num != 0)
    	{
    		scanf("%d", &num);
    		if( num != 0 )
    		sortlist( head, num );
    	}
    	outlist( head );
    	return 0;
    }
    
    void outlist( PNODE head )
    {
    	PNODE p;
    	p = head->next;
    	while( p != NULL)
    	{
    		printf("%d\n",p->data);
    		p = p->next;
    	}
    }
    
    void sortlist( PNODE h, int num)
    {
        PNODE p,ptemp;   
        p = ( PNODE )malloc( sizeof(NODE) );   
        p->data = num;	
    	ptemp = h;   
    	
        while( (ptemp->next) != NULL)/*find the first bigger one than num  */ 
        {   
        	if(num<=ptemp->data)   
            { break; }   
            ptemp=ptemp->next;   
        }   
        
        if(num == ptemp->data)   
            { free(p); }   /*数据重复,释放内存*/
        else if (num > ptemp->data)   
            {   
                p->next = ptemp->next;   /*实际为NULL*/ 
                ptemp->next = p;   
            }   
            else if (num < ptemp->data)   
            {   
                int temp;   
                temp = ptemp->data;   
                ptemp->data = num;   
                p->data = temp;   
                p->next = ptemp->next;   
                ptemp->next = p;   
            }   
    }

     

    展开全文
  • 然后按照成绩值进行降序排序(交换链表中结构体位置而不是成员值)怎么实现。我通过冒泡排序for(one=head;one!=NULL;one=one->next) for(two=one->next;two!=NULL;two=two->next) { if() {......} } 一直实现不...
  • 好像是冒泡排序。作为单向链表,这类需要交换元素的方法都很麻烦。我这儿给一个直接插入到一个新链表中的方法。没写注释,如果看不懂,我再补充。#include #include #include struct student{int num;struct student...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    不太明白你想用什么算法。好像是冒泡排序。作为单向链表,这类需要交换元素的方法都很麻烦。

    我这儿给一个直接插入到一个新链表中的方法。没写注释,如果看不懂,我再补充。

    #include

    #include

    #include

    struct student

    {

    int num;

    struct student * next;

    };

    struct student *sort(struct student *p)

    {

    struct student *sorted = NULL;

    while (p != NULL)

    {

    struct student *q = sorted;

    if(q == NULL)

    {

    sorted = q = p;

    p = p->next;

    q->next = NULL;

    }

    else

    {

    if (p->num < sorted->num)

    {

    q = p;

    p = p->next;

    q -> next = sorted;

    sorted = q;

    }

    else

    {

    struct student *tmp;

    while (q->next != NULL && p->num > q->next->num)

    q = q->next;

    tmp = q->next;

    q->next = p;

    p = p->next;

    q->next->next = tmp;

    }

    }

    }

    return sorted;

    }

    #define N 20

    int main()

    {

    int i;

    struct student stdnt[N];

    struct student *p;

    srand((unsigned int)clock());

    for(i=0; i

    {

    int r = i == 0 ? 0 : rand() % i;

    stdnt[i].num = stdnt[r].num;

    stdnt[r].num = i+1;

    stdnt[i].next = &(stdnt[i+1]);

    }

    stdnt[N-1].next = NULL;

    printf("\n");

    for(p = stdnt; p != NULL; p = p->next)

    printf("%d ", p->num);

    printf("\n");

    p = sort(stdnt);

    for(;p != NULL; p = p->next)

    printf("%d ", p->num);

    printf("\n");

    return 0;

    }

    展开全文
  • 给一个简单的数组冒泡排序算法和程序c语言链表冒泡排序,注释应写具体。不要在别处粘贴代码过来。我想实习的是交换的是它们的指针域也就是每个节点而不是结点后面的数据。C/C++ codestruct Node{int data;struct ...
  • C语言链表排序.docx

    2020-03-09 13:38:59
    C语言链表排序.docx
  • c语言链表详解(超详细)

    万次阅读 多人点赞 2018-06-03 16:16:01
    链表是一种常见的基础数据结构,结构体指针在这里得到了充分的利用。链表可以动态的进行存储分配,也就是说,链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入...
  • C语言链表插入排序

    千次阅读 2015-05-10 22:56:58
    C语言链表插入排序 大家好,我就是人见人爱 花见花开车见爆胎的小智 声音依旧是那么低沉切性感,现在又来给大家更新博客的第一视角了。 这期给大家介绍的是链表的插入排序。 具体代码如下: struct Student *...
  • } void sort(ts **h) /* 选择排序算法 */ { ts *h1,*p,*q,*r,*s; h1=p=(ts *)malloc(sizeof(ts)); p->next=*h; while(p->next) { q=p->next; r=p; while(q->next) { if(q->next->valuenext->value) r=q; q=q->next;...
  • 以前写过双向链表交换任意结点的程序,后来写了个双向链表排序的程序,没用边输入边排序的思想,是输入完毕后我按照选择法排序的思想对链表的结点进行交换.是地址交换.#include <stdio.h>typedef strUCt Link/*...
  • C语言链表节点排序

    千次阅读 2019-05-07 19:54:45
    初次用到链表排序还是在C语言课程设计上,当时想着要把代码发到CSDN上,结果一拖再拖到现在。 我的课程设计项目为“学生成绩管理系统”,所用链表为双向链表链表。 涉及到成绩管理则避免不了成绩的排序。 结构体中...
  • C语言 链表数据的排序

    千次阅读 2021-02-25 22:04:49
    链表排序仅对链表中的数据进行排序,如果想进行对整个结构体的排序,也就是利用数据顺序来调整节点中的信息,需要对节点进行交换,但与此方法不同,望读者周知。 测试排序代码请先参考下边完整的测试代码。 编程...
  • 表插入排序,即使用链表的存储结构对数据进行插入排序。在对记录按照其关键字进行排序的过程中,不需要移动记录的存储位置,只需要更改结点间指针的指向。链表的存储结构用代码表示为:#define SIZE 100typedef st.....
  • c语言实现链表排序,利用选择排序的思想,可以供大家学习。
  • 先创建两个乱序的链表,再依次排序。然后将两个有序链表合并。自己闲来练手的程序,不足之处望指出。#include#includetypedef struct node{int num;struct node *next;}link;void create(link *head){link *p,*q;p=...
  • "本文将介绍最基本的排序算法-选择排序"在介绍选择排序法之前,我们首先来介绍一下两种数据类型:数组和链表。 数组与链表 上图中第一个数据类型是数组,数组是一个连续的数据序列,它们在内存中也是顺序存储的,...
  • C语言链表冒泡排序

    2012-02-12 12:29:27
    给一个简单的链表冒泡排序算法和程序,注释要写详细。不要在别处粘贴代码过来。我想实习的是交换的是他们的指针域也就是每个结点而不是结点里面的数据。 struct Node { int data; struct Node * pNext; }; ...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼void sort() {//其意义是if(empty() || size()==1 ) 但是这样做没有效率if (node->next == node || node->...//链表数组,也是缓冲数组的counter[i...
  • C语言-链表排序

    千次阅读 2019-05-13 20:00:54
    C语言-链表排序 题目描述 已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。 输入 第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的...
  • c语言 链表合并,排序

    千次阅读 2019-08-15 10:54:46
    已有a、b两个链表,每个链表中的结点包括学号、成绩。要求把两个链表合并,按学号升序排列。 输入: 第一行,a、b两个链表元素的数量N、M,用空格隔开。 接下来N行是a的数据 然后M行是b的数据 每行数据由学号和...
  • 插入在链表最前面的时候会出现问题,其他情况没有问题 _测试 输入会错误的情况(插在开头):_ 3,sfdfs,sdfsfd 2,sdf,sdf,sfd -1 测试 输入会正确的情况: 3,sdf,sd,sfd 5,fsd,sdf 4,dsf,sdf -1 ...
  • //建立无序链表 void print ( struct student * a ) ; //打印数据 struct student * sort ( struct student * a ) ; //排序 int n = 1 ; int main ( void ) { struct student * ...
  • c语言 整数链表排序

    2010-08-05 13:20:18
    整数链表排序的c源代码 说明:试按以下给出的排序算法为整数链表编写一个排序函数: 该算法是按表元键值的各位值进行排序。 设有一个整数链表,其中表元的键值为不超过三位数的整数,不妨设键值形式ABC。其中A...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 31,160
精华内容 12,464
关键字:

c语言链表排序

c语言 订阅