2008
05-21

这段代码的功能要求是先建立两个链表,大小有序,然后连接为一个链表,仍然有序


如输入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;
}


高手请赐教》有 5 条评论

  1. 550436073 说:

    二、实训内容< ?:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

     参考题目:编程完成简单的通信录程序。

    编程提示:该程序包内容括以下的内容。

     

    1输入姓名、单位、电话号码

     

    2按上显示

     

    3按姓名查找后显示

     

    4删除记录

     

    5增加记录

     

    6保存修改后的文件

     

    7)显示修改后的文件

     

    8)退出。

     

    三、要求

    (1)对系统进行功能模块分析、控制模块分析正确

     

    (2)系统设计要实用

     

    (3)编程简练,可用,功能全面

     

    (4)说明书、流程图要清楚

  2. lvsuilv 说:

    晕。。。

  3. bichen 说:

    这道题目是不是说输入任何数都要冲小到大输出?

  4. lvsuilv 说:

    已解决,谢谢关心!

  5. bichen 说:

    没事~~呵呵

留下一个回复