1. 问题描述:
往递增的线性表中插入一个元素使之插入后的线性表还是递增的
2. 思路分析:
先要对线性表进行初始化,使用一个for循环即可,然后查找出线性表中第一个比当前要插入的元素大的位置,然后将元素插入到前面就可以了
具体的代码如下:
#include <iostream>
#define maxSize 11
using namespace std;
//采用顺表表的方式来进行存储(数组)
typedef struct Sqlist {
int data[maxSize];
int length;
}Sqlist;
Sqlist L;
int findElem(Sqlist L, int x) {
int i;
for(i = 0; i < L.length; i++){
if(L.data[i] >= x){
return i;
}
}
}
void insertElem(Sqlist &L, int x)
{
int p, i;
p = findElem(L, x);
for (i = L.length - 1; i >= p; --i)
L.data[i + 1] = L.data[i];
L.data[p] = x;
++(L.length);
}
int main() {
L.data[maxSize];
for(int i = 0; i < 10; i++){
L.data[i] = i;
}
L.length = 10;
for(int i = 0; i < L.length; i++){
cout << L.data[i];
}
cout << endl;
insertElem(L, 3);
for(int i = 0; i < L.length; i++){
cout << L.data[i];
}
return 0;
}