已知线性表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 ;
}