有两个按元素值递增有序的单链表A和B,编一程序将A表和B表归并成一个新的递增有序的单链表C(值相同的元素只保留一个在C表中)
#include <stdio.h>
typedef struct node
   { int data;
     struct node *next;
    } LINKLIST;
LINKLIST *creat  ( *void) ;      
merger (LINKLIST *head_a,LINKLIST *head_b,LINKLIST *head_c) ;
void print (LINKLIST *head_c) ;
main()
{ LINKLIST a={1,3,8,19,26};
   LINKLIST b={2,3,10,11,19,23,29,35};
   LINKLIST *head_a=&a,*head_b=&b;
   LINKLIST *head_c;
   head_c=creat ();
   merger ( head_a, head_b,head_c) ;
   print  ( head_c);
}
LINKLIST *creat ( *void)        
{ LINKLIST *r,*head_c,*last;
   r=malloc (sizeof(LINKlIST));   // 建立表头节点
    head_c=r;last=r;
    t->next=NULL;
    return (head_c);
   }
merger(LINKLIST *head_a,LINKLIST *head_b,LINKLIST *head_c)      //  合并链表
   { LINKLIT *p,*q,*r,*last;
     p=head_a,q=head_b,r=head_c ,last=r;
     while (p!=NULL&&q!=NULL)
        { r=malloc(sizeof(LINKLIST));
             if (p->data<q->data)
                 {
                   r->data=p->data;
                   last->next=r;
                   last=r;
                   r->next=NULL;
                   p=p->next;
                   r=r->next;           //这里好象很有问题,因为后面没有节点了,可是不知道该怎么弄
                  }
              else if (p->data>q->data)
                     {
                       r->data=q->data)
                       last->next=r;
                       last=r;
                       t->next=NULL;
                       q=q->next;
                       r=r->next;
                      }
                   else {
                          r->data=p->data;
                          last->next=r;
                          last=r;
                          t->next=NULL;
                          p=p->next;
                          q=q->next;
                          r=r->next;
                         }
}
        while (p!=NULL)
           { r=malloc (sizeof(LINKLIST));
             r->data=p->data;
             last->next=r;
             last=r;
             t->next=NULL;
             p=p->next;
             r=r->next;
             }
        while (q!=NULL)
           { r=malloc (sizeof(LINKLIST));
             r->data=q->data;
             last->next=r;
             last=r;
             t->next=NULL;
             q=q->next;
             r=r->next;
             }
    }
void print (LINKLIST *head_c)        // 链表C的输出
  { LINKLIST *r;
    printf("The new LINKLIST:\n");
    r=head_c;
    r=r->next;
    while (r!=NULL)
       { printf("%6d",r->data);
         r=r->next;
         }
}
好象写的很不对,谁能帮我写个,让我对照一下
PS:可以再附加一个问题吗?
点分十进制表示的IP地址131.107.2.89的二进制表示是________
[此贴子已经被作者于2006-10-14 11:08:59编辑过]



											
	    

	
