当前位置: 代码迷 >> C语言 >> 朋友帮我改一个简单程序
  详细解决方案

朋友帮我改一个简单程序

热度:170   发布时间:2005-06-06 12:57:00.0
朋友帮我改一个简单程序
实现链表的合并
基本要求:
(1)  建立两个链表A和B,链表的个数分别为m和n个;
(2) 假设元素分别为(X1,X2,X3,。。。Xm)和(Y1,Y2,Y3。。。
Yn)。把它们合并成一个线形表C使得:当m》n时,C=X1,Y1,X2,
Y2。。。Xn,Yn。。。Xm
当n》m时,C=Y1,X1,Y2,X2。。。Yn,Xn。。。Yn输出线形表。



我快晕死了上次在论坛里面找的一个算法不太对,汗~~~自己不怎么会改搞了一天都没有什么进展,太菜了吧,急寻高手帮我解答感激涕零~~在线等。

#include"stdio.h"
#include"malloc.h"
typedef struct  LNode{
int  data[];
int length;
struct LNode *next;
}LNode,*List;

struct LNode *MergeList(List a,List b,List c)
{
  int m,n,i,j;

  m=a->length;  n=b->length;

if(m>=n)
   {
      for(i=1,j=1;i<=n,j<=n;i++,j++)
       {
      c->data[2*i]=a->data[j];

      c->data[2*i-1]=b->data[j];

       }
     
    for(i=n+n;i<=m+n;i++)
      { c->data[i]=a->data[i]; }

    }

  else
   {
     for(i=1,j=1;i<=m,j<=m;i++,j++)
       {
      c->data[2*i-1]=b->data[j];

      c->data[2*i]=a->data[j];

       }

     for(i=m+m;i<=n+m;i++)
    {   c->data[i]=b->data[i]; }

    }
  return c;
}
struct LNode *CreatList(List L,int n)
{int i;
List p;
L=(List)malloc(sizeof(LNode));

L->next=NULL;
for(i=n;i>0;i--) {
p=(List)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;

}return L;
}
void main()
{int x,y,i;
List a,b,c,p;
printf("input the length of a:\n");
scanf("%d",&x);
printf("input the length of b:\n");
scanf("%d",&y);
printf("input a:\n");
for(i=1;i<=x;i++)
scanf("%d",&a->data[i]);
printf("input b:\n");
for(i=1;i<=y;i++)
scanf("%d",&b->data[i]);
a->length=x;b->length=y;
CreatList(a,x);
CreatList(b,y);
MergeList(a,b,c);
for(i=1;i<=x+y;i++)
printf("%d",c->data[i]);
}
这是本人的完整程序,可是老出现指针错误请高手帮我改一改,非常感谢~~
搜索更多相关的解决方案: 朋友  

----------------解决方案--------------------------------------------------------
等待着~~
----------------解决方案--------------------------------------------------------
  相关解决方案