1. 程式人生 > >插入一個元素到有序順序表中,使其再次有序

插入一個元素到有序順序表中,使其再次有序

程式碼:

#include <stdio.h>

/*
題目:資料結構題集17頁2.11
設順序表中資料元素遞增有序,試寫一演算法,將x插入到順序表的適當位置上,以保持該表的有序性
演算法:逆序遍歷順序表找合適的插入new_elem的位置,並將其插入
*/

#define maxlen 50
typedef struct{
    int arr[maxlen];
    int length;
}Seqlist;

void print_SQ(Seqlist list){
    for(int i=0; i<list.length;i++){
        printf("%d  ",list.arr[i]);
    }
    printf("\n");
}

int main(void)
{
    Seqlist list;
    list.arr[0]=1;list.arr[1]=6;list.arr[2]=9;list.arr[3]=30;
    list.length = 4;


    if(list.length+1 > maxlen){
        return -1;
    }
    int i;
    //要插入連結串列的數值
    int new_elem = 6;
    //更新表長
    ++list.length;
    //如下是插入new_elem操作:逆序遍歷順序表找合適的插入new_elem的位置,並將其插入
    for(i=list.length-1;i>=0;i--){
        if(list.arr[i] >= new_elem){
            //當前元素向後移動賦值
            list.arr[i+1] = list.arr[i];
        }else{
            list.arr[i+1] = new_elem;
            break;
        }
//        print_SQ(list);
    }
    //列印順序表
    print_SQ(list);

    return 0;
}