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上无报错!
哪怕给出建议也好,谢谢了!
超时, 顾名思义就是超时, 为了避免垃圾算法, 和代码格式没什么关系
比如你要算个非负整数求和a + b
那么
int s = 0;
for(int i=0; i<a; i++) {
s++;
}
for(int i=0; i<b; i++) {
s++;
}
这种代码对不对? 不溢出时应该是对的, 会有人这么用吗?
同一问题的不同解决方法, 多快好省的就是好方法, 不多快好省的就是坏方法
你自己运行没什么问题, 那是因为你运行的样例数量级不够, 而在线评判一般都是用边缘值和大量数据来做
比如上面的加法, 可能求个100000000 + 100000000 (忽略可能的溢出问题), 和正经两变量相加比起来慢成什么了?
你可以试试先做一万个节点, 然后测试一下