selfcultivate 2018-12-28 18:37 采纳率: 0%
浏览 243

链表的合并与排序。巨大疑惑,请问严格的网上代码提交评定标准是什么?以及这段代码的问题。救救孩子。

1.我上交代码的时候显示超时?为什么?代码格式有什么需要改进的吗?初学者,求解惑!感谢!(在VC上是能得出答案的

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

typedef struct line{
    int a;
    struct line *next;
}line;

#define LEN sizeof(line)

void Free(line *head){
    line *p;
    while(head!=NULL){
        p=head->next;
        free(head);
        head=p;
    }
}
void prin(line *head){
    line *p=head->next;
    while(p!=NULL){
        printf("%d ",p->a);
        p=p->next;
    }
}
void change(line *head,int count){
    line *p,*tail;
    while(count!=0){
        tail=head->next;
        p=tail->next;
        while(p!=NULL){
            if((p->a)<(tail->a)){
                (p->a)=(tail->a)+(p->a);
                (tail->a)=(p->a)-(tail->a);
                (p->a)=(p->a)-(tail->a);
            }
            tail=p;
            p=p->next;
        }
        count--;
    }
}

void main(){
    line *p,*head1,*tail,*head2;
    int count=0;

    head1=tail=(line *)malloc(LEN);
    head1->next=tail->next=NULL;

    do
    {
        p=(line *)malloc(LEN);
        scanf("%d",&p->a);

        tail->next=p;
        p->next=NULL;
        tail=p;
        count++;
    }while(getchar()!='\n');

    head2=tail=(line *)malloc(LEN);
    head2->next=tail->next=NULL;

    do
    {
        p=(line *)malloc(LEN);
        scanf("%d",&p->a);

        tail->next=p;
        p->next=NULL;
        tail=p;
        count++;
    }while(getchar()!='\n');
    tail->next=head1->next;

    change(head2,count);
    prin(head2);
    Free(head2);
    head1=head2=p=tail=NULL;
}

vc上无报错
图片说明!
哪怕给出建议也好,谢谢了!

  • 写回答

1条回答 默认 最新

  • crf_moonlight 2018-12-28 13:56
    关注

    超时, 顾名思义就是超时, 为了避免垃圾算法, 和代码格式没什么关系
    比如你要算个非负整数求和a + b
    那么

    int s = 0;
    for(int i=0; i<a; i++) {
      s++;
    }
    for(int i=0; i<b; i++) {
      s++;
    }
    

    这种代码对不对? 不溢出时应该是对的, 会有人这么用吗?
    同一问题的不同解决方法, 多快好省的就是好方法, 不多快好省的就是坏方法

    你自己运行没什么问题, 那是因为你运行的样例数量级不够, 而在线评判一般都是用边缘值和大量数据来做
    比如上面的加法, 可能求个100000000 + 100000000 (忽略可能的溢出问题), 和正经两变量相加比起来慢成什么了?

    你可以试试先做一万个节点, 然后测试一下

    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?