代码:
#include <stdio.h>
/*
题目:数据结构题集17页2.11
设顺序表中数据元素递增有序,试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性
算法:逆序遍历顺序表找合适的插入new_elem的位置,并将其插入
*/
#define maxlen 50
typedef struct{
int arr[maxlen];
int length;
}Seqlist;
void print_SQ(Seqlist list){
for(int i=0; i<list.length;i++){
printf("%d ",list.arr[i]);
}
printf("\n");
}
int main(void)
{
Seqlist list;
list.arr[0]=1;list.arr[1]=6;list.arr[2]=9;list.arr[3]=30;
list.length = 4;
if(list.length+1 > maxlen){
return -1;
}
int i;
//要插入链表的数值
int new_elem = 6;
//更新表长
++list.length;
//如下是插入new_elem操作:逆序遍历顺序表找合适的插入new_elem的位置,并将其插入
for(i=list.length-1;i>=0;i--){
if(list.arr[i] >= new_elem){
//当前元素向后移动赋值
list.arr[i+1] = list.arr[i];
}else{
list.arr[i+1] = new_elem;
break;
}
// print_SQ(list);
}
//打印顺序表
print_SQ(list);
return 0;
}