數據結構線性表-順序表:兩個有序順序表合併爲一個新的有序順序表,並返回結果

數據結構題-順序表:

將倆有序順序表合併爲一個新的有序順序表,並返回結果

輸入:

3 3
1 2 3 4 5 6

輸出

1 2 3 4 5 6

輸入:

3 3
3 3 4 4 5 5

輸出:

3 4 5
思路:

簡單比較兩個數組大小,
由於有序,
1.如果結果數組當前存儲和a數組或者b數組當前存儲重複,就跳過, 2.如果沒有重複,就把小的那個存入。
注意:
注意相等情況的處理,不要遺漏

c語言代碼:

#include <stdio.h>
#include <stdlib.h>

int main(){
    int a_len=0;
    int b_len=0;
    int a[50];
    int b[50];
    scanf("%d",&a_len);
    scanf("%d",&b_len);
    int i=0;
    for(i=0;i<a_len;i++){
        scanf("%d",&a[i]);
    }
    for(i=0;i<b_len;i++){
        scanf("%d",&b[i]);
    }
    i=0;int j=0;int k=0;int c[100];
    c[0]=a[0];
    while(i!=a_len || j!=b_len){ 
        if (c[k]==b[j])
        {
            j++;
            continue;
        }
        if(c[k]==a[i])
        {
            i++;
            continue;
        }
        if(a[i]<=b[j]&&c[k]!=a[i]){
            k++;
            //printf("a[i]:%d\n",a[i]);
            c[k]=a[i];
            i++;
        }
        else if(a[i]>b[j]&&c[k]!=b[j])
        {
            k++;
            //printf("b[j]:%d\n",b[j]);
            c[k]=b[j];
            j++;
        }
    }
    for (i = 0; i < k+1; i++)
    {
        printf("%d",c[i]);
    }
}

結果示意:
在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章