这段代码的功能要求是先建立两个链表,大小有序,然后连接为一个链表,仍然有序
如输入1,5,9,0
2,4,8,0后
结果为1,2,4,5,8,9
但为什么下面的代码总不对呢,高手请指教
#include<stdio.h>
#include<stdlib.h>
#define len sizeof(d)
typedef struct s
{
int a;
struct s *next;
}d;
void main()
{
d *creat();
void print(d *p);
d *lj(d *p,d *q);
d *x=0,*y=0,*head=0;
x=creat();
y=creat();
head=lj(x,y);
//print(head);
}
d *creat()
{
int n=0;
d *head=0,*q=0,*p=0;
p=q=(d *)malloc(len);
printf(“input\n”);
scanf(“%d”,&p->a);
while(p->a!=0)
{
n++;
if(n==1)
head=p;
else
q->next=p;
q=p;
p=(d *)malloc(len);
printf(“input\n”);
scanf(“%d”,&p->a);
}
q->next=0;
return head;
}
void print(d *p)
{
do
{
printf(“%d\n”,p->a);
p=p->next;
}while(p!=0);
}
d *lj(d *p,d *q)
{
d *k=0,*p1=p,*q1=q,*head=0;
if(p1->a<=q1->a)
{
k=p1;
head=k;
k->next=q1;
k=q1;
}
else
{
k=q1;
head=k;
k->next=p1;
k=p1;
}
p=p->next;
p1=p;
q=q->next;
q1=q;
printf(“%d\n”,p->a);
printf(“%d\n”,p->a);
while(p!=0&&q!=0)
{
if(p->a<=q->a)
{
k->next=p;
k=p;
k->next=q;
k=q;
}
else
{
k->next=q;
k=q;
k->next=p;
k=p;
}
p=p->next;
q=q->next;
}
k->next=0;
return head;
}
>> 本文固定链接: http://www.vcgood.com/archives/2369
二、实训内容< ?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />
参考题目:编程完成简单的通信录程序。
编程提示:该程序包内容括以下的内容。
(1)输入姓名、单位、电话号码
(2)按上显示
(3)按姓名查找后显示
(4)删除记录
(5)增加记录
(6)保存修改后的文件
(7)显示修改后的文件
(8)退出。
三、要求
(1)对系统进行功能模块分析、控制模块分析正确
(2)系统设计要实用
(3)编程简练,可用,功能全面
(4)说明书、流程图要清楚
晕。。。
这道题目是不是说输入任何数都要冲小到大输出?
已解决,谢谢关心!
没事~~呵呵