zoukankan      html  css  js  c++  java
  • BJFU-225-基于链表的两个递增有序序列的合并

      1 #include<stdio.h>
      2 #include<stdlib.h>
      3 typedef struct Lnode{
      4     int num;
      5     struct Lnode * next;
      6 }Lnode,*LinkList;
      7 
      8 typedef struct Link{
      9     LinkList data;
     10     struct Link * next;
     11 }Link,*List;
     12 void creatList(LinkList &L,int n)
     13 {
     14     L = (LinkList)malloc(sizeof(Lnode));
     15     L->next = NULL;
     16     LinkList rear = L;
     17 
     18     for(int i=1;i<=n;i++)
     19     {
     20         LinkList p = (LinkList)malloc(sizeof(Lnode));
     21 
     22         scanf("%d",&p->num);
     23         rear->next = p;
     24         p->next = NULL;
     25         rear = p;
     26     }
     27 }
     28 void traverse(LinkList L)
     29 {
     30     LinkList p = L->next;
     31     while(p)
     32     {
     33         if(p->next==NULL)
     34         {
     35             printf("%d",p->num);//最后一个数字的输出不能有空格,不然编译通不过。不要问我为什么!!!
     36         }else{
     37             printf("%d ",p->num);
     38         }
     39 
     40         p = p->next;
     41     }
     42     printf("
    ");
     43 }
     44 LinkList mergeList(LinkList La,LinkList Lb,int n,int m)
     45 {
     46     LinkList Lc,a,b,c;
     47     Lc = La;
     48     a = La->next;
     49     b = Lb->next;
     50     c = Lc;
     51 
     52     while(a&&b)
     53     {
     54         if(a->num > b->num)
     55         {
     56             c->next = b;
     57             c = b;
     58             b = b->next;
     59         }else if(a->num==b->num)
     60         {
     61             LinkList q = b;
     62             c->next = a;
     63             c = a;
     64             a = a->next;
     65             b = b->next;
     66             free(q);
     67         }else
     68         {
     69             c->next = a;
     70             c = a;
     71             a = a->next;
     72         }
     73     }
     74 
     75     c->next = a?a:b;
     76     free(Lb);
     77     return Lc;
     78 }
     79 int main()
     80 {
     81     int n,m;
     82 
     83     List Lc = (List)malloc(sizeof(Link));
     84     List r = Lc;
     85     while(1)
     86     {
     87         scanf("%d%d",&n,&m);
     88         if(n==0&&m==0) break;
     89         LinkList La,Lb;
     90         creatList(La,n);
     91         creatList(Lb,m);
     92 
     93         List pc = (List)malloc(sizeof(Link));
     94         LinkList Lc = mergeList(La,Lb,n,m);
     95         pc->data = Lc;
     96         r->next = pc;
     97         r = pc;
     98         pc->next = NULL;
     99 
    100     }
    101     List p = Lc->next;
    102     while(p)
    103     {
    104         traverse(p->data);
    105         p = p->next;
    106     }
    107 }
  • 相关阅读:
    vue入门:(方法、侦听器、计算属性)
    vue入门:(模板语法与指令)
    前端资源
    CSS3总结七:变换(transform)
    CSS总结六:动画(一)ransition:过渡、animation:动画、贝塞尔曲线、step值的应用
    设计模式(一):简单工厂
    正则命令积累
    命令模式 & 策略模式 & 模板方法
    抽象工厂:简单游戏角色
    简单工厂模式—>工厂模式
  • 原文地址:https://www.cnblogs.com/wwww2/p/11745429.html
Copyright © 2011-2022 走看看