设顺序表L是一个递增有序表,试写一算法,将x插入L中,并使L仍是一个有序表。
【正确答案】:设计思想:首先查找X的插入位置i,其次是将线性表中自A[i]至A[elenum一1]的元素后移一个位置,最后将X插入到A[i],并且将表长加1,算法如下: typedef int datatype #define arrsize 1024 typedef struct {DataType A[arrsize]; int elenum; //线性表的当前表长 }Seqlist; int insert(Seqlist*L,datatype X;) { int i,j; if(((*L).elenum)>=arrsize一1) { printf("overflow");return 0;) else { for(i-(*L).elenum一1;i﹥=0&&x<(*L).A[i];i一一) for(j=(*L).elenum—1;j>=i+1;j一一) (*L).A[j+1]=(*L).A[j]; (*L).A[i+1]=x; l (*L)elenum=(*L).elenum+1; } return(1); 算法的时间复杂度:O(n)。