顺序表的存储结构:
typedef struct{
int data[Maxsize]; //存在顺序表中的元素
int length; //存放顺序表的长度
}SqList;
分析:
要保持插入一个元素后,仍然要保持有序。肯定先要查找插入位置。
怎么找插入位置? 和单链表有什么不同?
定义一个位置变量i, 通过循环i++. 而单链表是p = p->next;
找到了位置如何插入?这里又和单链表有什么不同?
这里是元素后移,让位插入, 而单链表是修改指针即可。
思路:****(查找位置+元素后移插入)
1.定义要查找的位置变量i,
2.通过while循环,条件为x>= L.data[i]; i++;
3.通过循环将后面的元素后移一位,让出空位,再插入
4.既然顺序表插入了一位,那么长度也要增加一位。
C代码实现:
void insert(SqList &L,int x){ //L为引用型参数
int i = 0,j;
while(i<L.length && x <= L.data[i]){ //查找元素
i++;
}
for(j = L.length-1; j >= i ; j--)
L.data[j+1] = L.data[j]; //元素后移
L.data[i] = x; //插入
L.length++; //长度加1
}