C语言4.out 请求答疑
题目是这样的:现在给出两个整数数列,先要将其合并为一个数列,并且合并后整个数列有序(从小到大),是一定要用链表做的。我的方法是:先合并两个链表再排序,运行例子的时候没有错...
题目是这样的:现在给出两个整数数列,先要将其合并为一个数列,并且合并后整个数列有序(从小到大),是一定要用链表做的。
我的方法是:先合并两个链表再排序,运行例子的时候没有错的,可是提交上去就会显示4.out,自己没能找出错误在那里,请求高手帮助,谢谢!
我的程序如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 5000
struct number
{
int num;
struct number *next;
};
#define L sizeof(struct number)
struct number *create(int n)
{
struct number *head,*thisn,*newn;
int i;
newn=(struct number *)malloc(L);
scanf("%d",&newn->num);
if(n==1)
{
head=newn;
head->next=NULL;
}
else
{
head=newn;
thisn=newn;
for(i=1;i<n;i++)
{
newn=(struct number *)malloc(L);
scanf("%d",&newn->num);
thisn->next=newn;
thisn=newn;
}
thisn->next=NULL;
}
return head;
}
void queue(int n,struct number *head)
{
int i,pass,temp;
struct number *thisn,*lastn;
for(pass=1;pass<n;pass++)
{
lastn=head;
thisn=lastn->next;
for(i=0;i<n-pass;i++)
{
if(lastn->num>thisn->num)
{
temp=lastn->num;
lastn->num=thisn->num;
thisn->num=temp;
}
lastn=thisn;
thisn=lastn->next;
}
}
}
int main()
{
int m,n,i,j;
struct number *head1,*head2,*link;
scanf("%d",&m);
head1=create(m);
scanf("%d",&n);
head2=create(n);
link=head1;
for(i=1;i<m;i++)
link=link->next;
link->next=head2;
queue(m+n,head1);
for(i=1;i<m+n;i++)
{
printf("%d ",head1->num);
head1=head1->next;
}
printf("%d",head1->num);
system("pause");
return 0;
} 展开
我的方法是:先合并两个链表再排序,运行例子的时候没有错的,可是提交上去就会显示4.out,自己没能找出错误在那里,请求高手帮助,谢谢!
我的程序如下:
#include<stdio.h>
#include<stdlib.h>
#define MAX 5000
struct number
{
int num;
struct number *next;
};
#define L sizeof(struct number)
struct number *create(int n)
{
struct number *head,*thisn,*newn;
int i;
newn=(struct number *)malloc(L);
scanf("%d",&newn->num);
if(n==1)
{
head=newn;
head->next=NULL;
}
else
{
head=newn;
thisn=newn;
for(i=1;i<n;i++)
{
newn=(struct number *)malloc(L);
scanf("%d",&newn->num);
thisn->next=newn;
thisn=newn;
}
thisn->next=NULL;
}
return head;
}
void queue(int n,struct number *head)
{
int i,pass,temp;
struct number *thisn,*lastn;
for(pass=1;pass<n;pass++)
{
lastn=head;
thisn=lastn->next;
for(i=0;i<n-pass;i++)
{
if(lastn->num>thisn->num)
{
temp=lastn->num;
lastn->num=thisn->num;
thisn->num=temp;
}
lastn=thisn;
thisn=lastn->next;
}
}
}
int main()
{
int m,n,i,j;
struct number *head1,*head2,*link;
scanf("%d",&m);
head1=create(m);
scanf("%d",&n);
head2=create(n);
link=head1;
for(i=1;i<m;i++)
link=link->next;
link->next=head2;
queue(m+n,head1);
for(i=1;i<m+n;i++)
{
printf("%d ",head1->num);
head1=head1->next;
}
printf("%d",head1->num);
system("pause");
return 0;
} 展开
3个回答
展开全部
没仔细看你的代码,不过system("pause");肯定是不能提交的
追问
你好,我是去掉system("pause")之后提交的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询