已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。
#include <iostream>
#include <string>
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) {
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;
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);
L.append(6);
L.append(4);
L.append(2);
L.append(1);
L.list_sort();
L.print_list();
cout << L.len() << endl;
cout << "---------" << endl;
L.Appropriate_insertion(3);
L.print_list();
cout << L.len() << endl;
return 0;
}