问:设计一个算法,将X插入到一个有序的线性表的适当位置上,并保持线性表的有序性。
答:通过比较在顺序表L中找到插入X的位置i,将该位置以及后面的元素后移一个位置,将X插入到位置i中,最后将L的长度增1。
#include <malloc.h> //包含头文件
#include <iostream>
using namespace std;
typedef struct //定义顺序表
{
int data[5];
int lenght;
}SqList;
void Insert(SqList &L)//具体插入算法
{
int i=0,j;
int x=5;
while (i<L.lenght&&L.data[i]<x) i++; //找到插入点
for (j=L.lenght-1;j>=i;j--)//依次后移
L.data[j+1]=L.data[j];
L.data[i]=x;
L.lenght++;
}
int main()
{
int a[5]={0,2,4,6,8};
int i;
SqList * L;
L=(SqList *)malloc(sizeof(SqList));
for(i=0;i<5;i++)
{
L->data[i]=a[i];
}
L->lenght=i;
Insert(*L);
cout<<L->data[3]<<endl;
return 0;
}