zoukankan      html  css  js  c++  java
  • 顺序表非递减顺序合并

      1 #include <bits/stdc++.h>
      2 using namespace std;
      3 #define MAXSIZE 100
      4 /**
      5  * 实验一 (1)
      6  * @author Unchangedman
      7  */
      8 typedef int ElemType;
      9 
     10 typedef struct
     11 {
     12     ElemType data[MAXSIZE];
     13     int length;
     14 }SqList;
     15 
     16 void InitList(SqList &sq)
     17 {
     18     sq.length = 0;
     19 }
     20 
     21 int GetLength(SqList sq)
     22 {
     23     return sq.length;
     24 }
     25 
     26 int GetElem(SqList sq,int i,ElemType &e)    /*求线性表中第i个元素*/
     27 {
     28     if (i < 1 || i > sq.length)        /*无效的i值*/
     29         return 0;
     30     else
     31     {
     32         e = sq.data[i-1];
     33          return 1;
     34     }
     35 }
     36 
     37 int InsElem(SqList &sq,ElemType x,int i) /*插入元素*/
     38 {
     39        if (i<1 || i>sq.length+1)            /*无效的参数i*/
     40            return 0;
     41        for (int j = sq.length; j >= i; j--)            /*将位置为i的结点及之后的结点后移*/
     42            sq.data[j] = sq.data[j-1];
     43     sq.data[i-1] = x;                   /*在位置i处放入x*/
     44        sq.length++;                        /*线性表长度增1*/
     45     return 1;
     46 }
     47 
     48 void PrintList(SqList &sq)
     49 {
     50     for(int i = 1; i <= sq.length; i++)
     51     {
     52         cout << sq.data[i - 1] << endl;
     53     }
     54     cout << endl;
     55 }
     56 
     57 void commonToC(SqList A, SqList B, SqList &C)
     58 {
     59     int i = 1, j = 1;
     60     int k = 0;
     61     
     62     int lena = GetLength(A), lenb = GetLength(B);
     63     ElemType a, b;
     64     while((i <= lena) && (j <= lenb))
     65     {
     66         GetElem(A,i,a);
     67         GetElem(B,j,b);
     68 
     69         if (a <= b)
     70         {
     71             InsElem(C,a,++k);
     72             ++i;
     73         }
     74         else{
     75             InsElem(C,b,++k);
     76             ++j;
     77         }
     78     }
     79     while(i <= lena)
     80     {
     81         GetElem(A,i++,a);
     82         InsElem(C,a,++k);
     83     }
     84     while(j <= lenb)
     85     {
     86         GetElem(B,j++,b);
     87         InsElem(C,b,++k);
     88     }
     89 }
     90 
     91 void commonAB(SqList &A, SqList B)
     92 {
     93     for(int i = 1; i <= GetLength(B); i++)
     94     {
     95         ElemType e;
     96         GetElem(B,i,e);
     97         int flag = 1;
     98         for(int j = 1; j <= GetLength(A); j++)
     99         {
    100             ElemType a;
    101             GetElem(A,j,a);
    102             if(e <= a)
    103             {
    104                 InsElem(A,e,j);
    105                 flag = 0;
    106                 break;
    107             }
    108         }
    109         if(flag)
    110             InsElem(A,e,GetLength(A) + 1);
    111     }
    112 }
    113 int main()
    114 {
    115     SqList A,B,C;
    116     InitList(A);  /*初始化顺序表sq*/
    117     InitList(B);  /*初始化顺序表sq*/
    118     InitList(C);  /*初始化顺序表sq*/
    119     
    120     InsElem(A,3,1);//插入数据
    121     InsElem(A,5,2);
    122     InsElem(A,8,3);
    123     InsElem(A,11,4);
    124     cout << "A: " << endl;
    125     PrintList(A);//打印表 A
    126 
    127     InsElem(B,2,1);//插入数据
    128     InsElem(B,6,2);
    129     InsElem(B,8,3);
    130     InsElem(B,9,4);
    131     InsElem(B,11,5);
    132     InsElem(B,15,6);
    133     InsElem(B,20,7);
    134     cout << "B: " << endl;
    135     PrintList(B);//打印表 B
    136 
    137     /*
    138         A 和 B表合并到C表
    139         元素值按非递减排列
    140      */
    141     commonToC(A,B,C);
    142     cout << "C :" << endl;
    143     PrintList(C);
    144 
    145     /*
    146         A 和 B表合并到A表
    147         元素值按非递减排列
    148      */
    149     cout << "A: " << endl;
    150     commonAB(A,B);
    151     PrintList(A);
    152     return 0;
    153 }
  • 相关阅读:
    HashMap实现原理
    设计模式-2-代理模式
    设计模式-1-单例模式
    重构技巧
    unable to create new native thread
    设计模式-6大原则
    阿里前端在线编程题
    如何实现用户懒加载?
    《我敢活成我想要的样子》读后感
    改bug心得
  • 原文地址:https://www.cnblogs.com/jxust-jiege666/p/7643296.html
Copyright © 2011-2022 走看看