• 4.线性表的合并


     1 
     2 #include <stdio.h>
     3 #include <stdlib.h>
     4 #include <malloc.h>
     5 
     6 #define OK   1
     7 #define ERROR  0
     8 #define TRUE 1
     9 #define FALSE 0
    10 
    11 #define ElemType int
    12 #define    MAXSIZE  100         /*此处的宏定义常量表示线性表可能达到的最大长度*/
    13 typedef  struct
    14 
    15     ElemType  elem[MAXSIZE]; /*线性表占用的数组空间*/
    16     int  last;                          /*记录线性表中最后一个元素在数组elem[ ]中的位置(下标值),空表置为-1*/
    17 }SeqList;
    18 
    19 void    merge(SeqList *LA,  SeqList *LB,  SeqList *LC)
    20 {
    21     int i,j,k;
    22     i=0;j=0;k=0;
    23     while(i<=LA->last&&j<=LB->last)
    24         if(LA->elem[i]<=LB->elem[j])
    25         {
    26             LC->elem[k]= LA->elem[i];
    27             i++
    28             k++;
    29         }
    30         else
    31         {
    32             LC->elem[k]=LB->elem[j];
    33             j++
    34             k++;
    35           }
    36     while(i<=LA->last)         /*当表LA有剩余元素时,则将表LA余下的元素赋给表LC*/
    37     {
    38         LC->elem[k]= LA->elem[i];
    39         i++
    40         k++;
    41     }
    42     while(j<=LB->last)         /*当表LB有剩余元素时,则将表LB余下的元素赋给表LC*/    
    43     {
    44         LC->elem[k]= LB->elem[j];
    45         j++
    46         k++;
    47     }
    48     LC->last=LA->last+LB->last+1;   /*LC的长度等于两个栈的长度+1*/
    49 }
    50 
    51 
    52 void main()
    53 {
    54     SeqList *la,*lb,*lc;
    55     int r;
    56     int i;
    57     
    58     la=(SeqList*)malloc(sizeof(SeqList));
    59     printf("please input the stack A 's length:");
    60     scanf("%d",&r);
    61     la->last = r-1;
    62     printf("please enter the numbers of stack A:\n");
    63     for(i=0; i<=la->last; i++)
    64     {
    65         scanf("%d",&la->elem[i]);
    66     }
    67     
    68     
    69     lb=(SeqList*)malloc(sizeof(SeqList));
    70     printf("please input the stack B 's length:");
    71     scanf("%d",&r);
    72     lb->last = r-1;
    73     printf("please enter the numbers of stack B:\n");
    74     for(i=0; i<=lb->last; i++)
    75     {
    76         scanf("%d",&lb->elem[i]);
    77     }
    78 
    79     lc=(SeqList*)malloc(sizeof(SeqList));
    80     merge(la,lb,lc);
    81     printf("Join the two stacks is:\n");
    82     for(i=0; i<=lc->last; i++)
    83     {
    84         printf("%d  ",lc->elem[i]);
    85     }
    86 }
    87 
  • 相关阅读:
    机器学习项目实战----信用卡欺诈检测(二)
    机器学习项目实战----信用卡欺诈检测(一)
    机器学习之使用Python完成逻辑回归
    逻辑回归算法
    机器学习之梯度下降
    线性回归算法原理推导
    Spark之RDD容错原理及四大核心要点
    Spark之RDD依赖关系及DAG逻辑视图
    Spark之RDD弹性特性
    Spark之RDD的定义及五大特性
  • 原文地址:https://www.cnblogs.com/zhangqs008/p/1523739.html
Copyright © 2020-2023  润新知