初始化顺序表(顺序表中元素为整型),里边的元素是1,2,3,然后通过scanf读取一个元素(假如插入的是6),插入到第2个位置,打印输出顺序表,每个元素占3个空格,格式为1 6 2 3,然后scanf读取一个整型数,是删除的位置(假如输入为1),然后输出顺序表 6 2 3,假如输入的位置不合法,输出false字符串。
#include <stdio.h>
//初始化顺序表(顺序表中元素为整型),里边的元素是1,2,3,然后通过scanf读取一个元素(假如插入的是6),插入到第2个位置,
// 打印输出顺序表,每个元素占3个空格,格式为1 6 2 3,然后scanf读取一个整型数,是删除的位置(假如输入为1),
// 然后输出顺序表 6 2 3,假如输入的位置不合法,输出false字符串。提醒,Language一定要选为C++。
#define MaxSize 50
typedef int elemtype;
typedef struct SqList{
elemtype data[MaxSize];
int length;
}SqList;
bool SqlistInsert(SqList &L,int e,elemtype a){//插入函数
if(e<1&&e>L.length){
return false;
}
if(e>MaxSize){
return false;
}
for (int k = L.length; k >=e; k--) {
L.data[k]=L.data[k-1];
}
L.data[e-1]=a;
L.length++;
return true;
}
void SqlPrintf(SqList L){//打印函数
for (int i = 0; i < L.length; ++i) {
printf("%3d",L.data[i]);
}
printf("\n");
}
bool SqlistDelete(SqList &L,int b){
if(b<1||b>L.length){
return false;
}
for (int i = b-1; i <L.length ; ++i) {
L.data[i-1]=L.data[i];
}
L.length--;
return true;
}
int main() {
int a,b;//a为添加的数,b为删除的位置,ret为操作返回值,成功为1失败为0
elemtype e;
SqList L;
bool ret,pos;
L.data[0]=1;
L.data[1]=2;
L.data[2]=3;
L.length=3;
scanf("%d",&a);
ret=SqlistInsert(L,2,a);
if(ret){
SqlPrintf(L);
} else{
printf("false\n");
}
scanf("%d",&e);
pos=SqlistDelete(L,b);
if(pos){
SqlPrintf(L);
} else{
printf("false\n");
}
return 0;
}
运行结果,题目来源王道