已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性

已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。

//
// Created by wp on 2020/3/5.
//已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。
//

#include 
#include 

using namespace std;
#define MAX 1000

class List_wp {
     
public:
    List_wp() {
     //初始化列表
        index = 0;
        list_array[index] = 0;
    }

    void append(const int &a) {
     //向列表添加数字
        list_array[index] = a;
        index++;
    }

    void Appropriate_insertion(const int &x) {
     //将X插入到L的适当位置上
        for (int i = 0; i < index; i++) {
     
            if (x <= list_array[i]) {
     
                yidong(i, x);
                return;
            }
        }
    }

    void list_sort() {
     //对列表进行排序
        for (int i = 0; i < index - 2; i++) {
     
            for (int j = 0; j < index - 1 - i; j++) {
     
                if (list_array[j] > list_array[j + 1]) {
     
                    int temp = list_array[j];
                    list_array[j] = list_array[j + 1];
                    list_array[j + 1] = temp;
                }
            }
        }
    };

    int len() {
     //返回列表的长度
        return index;
    }

    void print_list() {
     //打印列表的数据
        if (index == -1) {
     
            cout << "list is empty" << endl;
            return;
        }
        for (int i = 0; i < index; i++) {
     
            if (index != 0) {
     
                cout << list_array[i];
            }
            if (i == index - 1) {
     
                cout << endl;
            } else {
     
                cout << " , ";
            }
        }
    }

private:
    int index;//index
    int list_array[MAX];//保存的数字序列

    void yidong(int m_index, int m_num) {
     
        index++;
        for (int i = index; i > m_index; i--) {
     
            list_array[i] = list_array[i - 1];
        }
        list_array[m_index] = m_num;
    }
};


int main() {
     
    List_wp L;
    L.append(1);//用append向列表中添加元素
    L.append(6);
    L.append(4);
    L.append(2);
    L.append(1);

    L.list_sort();//让线性表L递增有序
    L.print_list();//打印列表的数据
    cout << L.len() << endl;//打印列表的长度

    cout << "---------" << endl;

    L.Appropriate_insertion(3);//将X插入到L的适当位置上
    L.print_list();//打印列表的数据
    cout << L.len() << endl;//打印列表的长度

    return 0;
}

你可能感兴趣的:(数据结构,算法,列表)