.任意输入一组复数,将该组复数按模从小到大排列(用单链表实现)。 struct Complex { double real; double imag; };

工程需要用到以下几个文件,题主用的codeblocks C语言

img

img

img

******


```

```******

一看就是华师的伢,贴一个老师写的代码,排序法要自己写,否则0分哦

#include "cl.h"
#include "bo2-2.c"
#define _CRT_SECURE_N0_WARNINGS
#include <stdio.h>
#include <stdlib.h>

void visit(ElemType c) //打印
 {
   printf("%lf %lf\n",c.real,c.imag); 
 }
double AbsComplex(ElemType z) //取模
 {
   double r=0;
   r=sqrt(z.real*z.real+z.imag*z.imag);
   return r;
 }
void BubbleSort(LinkList *L) //单链表实现冒泡排序
 {
   int i,count=0,num; //count 将记录链表结点数,num 为内循环次数
   LinkList p,q,tail;
   InitList(&p);
   InitList(&q);
   InitList(&tail); //创建三个指针进行冒泡排序
   p=*L; 
   while(p->next!=NULL) //计算链表结点数 count
    {
     count++;
     p=p->next;
    }
    for(i=0;i<count-1;i++) //冒泡法外循环
   {
    num=count-i-1; //num 为内循环次数
    q=(*L)->next; //令 q 指向第一个结点
    p=q->next; //令 p 指向下一个结点
    tail=*L; //令 tail 指向 q 的前一个结点
    while(num--) //冒泡法内循环
       {
        if(AbsComplex(q->data)>AbsComplex(p->data)) 
        //如果前面指向的 data 比后面指向的 data 大,则交换
            {
             q->next=p->next;
             p->next=q;
             tail->next=p;
            }
            tail=tail->next; //tail 指向下一结点,避免重复循环
            q=tail->next; 
            p=q->next;
       }
   }
 }
void main()
{
 LinkList La;
 ElemType e;
 int i,j,k,lenth,tem;
 ElemType scan;
 InitList(&La);
 printf("please input six Complex numbers:\n");
 for(i=0;i<6;i++)
 {
 scanf("%lf %lf",&scan.real,&scan.imag);
 ListInsert(La,i+1,scan);
 }
printf("LaList Element=:\n"); //创建好的链表
ListTraverse(La,visit);
BubbleSort(&La); //排序
printf("sorted Element=:\n"); //排序好的链表
ListTraverse(La,visit);
system("pause");
}

贴出你文本格式的代码吧,总不能为了回答问题还抄一遍你的代码

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^