#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */
#define maxsize 200
typedef int ElemType;
typedef struct{
ElemType elem[maxsize];
int last;
int length;
}Sqelist;
int setList(Sqelist *L){
// L->elem=(ElemType*)malloc(maxsize*sizeof(ElemType));
int i;
printf("请输入线性表长度:");
scanf("%d",&(L->length));
printf("请输入线性表中元素:");
for(i=0;i<L->length;i++){
scanf("%d",&(L->elem[i]));
}
return 0;
}
//2.4
int insertList(Sqelist *L,int x){
int i,a;
if(L->length==0){
printf("线性表为空");
exit(-1);
}
else {
L->length=L->length+1;
for(i=0;i<=L->length-1;){
if(L->elem[i]<=x){//线性表元素小于x, 数组后移
i++;
}
else break;
}
a=i;//a记录i
for(i=L->length-1;i>=a+1;i--){
L->elem[i]=L->elem[i-1];
}
L->elem[a]=x;
}
printf("插入x元素后的线性表为:");
for(i=0;i<=L->length-1;i++){
printf("%d ",L->elem[i]);
}
return 0;
}
//2.5
int deleteList(Sqelist *L,int i,int k){
int j;
if(L->length==0){
printf("线性表为空");exit(-1);
}
else if(i<1||i>L->length||i+k>L->length){
printf("i>线性表长度");exit(-1);
}
else {
for(j=i;j<i+k;j++){
L->elem[j-1]=L->elem[k];
}
L->length=L->length-(1+k);
}
return 0;
}
//2.6
int inversionList(Sqelist *L){
Sqelist b;
int i,j=0;
b.length=L->length;
if(L->length==0){
printf("线性表为空");
exit(-1);
}
else{
for(i=0;i<L->length;i++){
b.elem[b.length-(1+i)]=L->elem[i];
}
}
for(i=0;i<=b.length-1;i++){
printf("%d ",b.elem[i]);
}
return 0;
}
//2.6
int ConvertList(Sqelist *L){
int i,temp;
if(L->length==0){
printf("线性表为空");
exit(-1);
}
else{
for(i=0;i<=(L->length-1)/2;i++){
temp=L->elem[i];
L->elem[i]=L->elem[L->length-(1+i)];
L->elem[L->length-(1+i)]=temp;
}
}
for(i=0;i<L->length;i++){
printf("%d ",L->elem[i]);
}
return 0;
}
int main() {
Sqelist a;
int i,k,x;
scanf("%d",&i);
scanf("%d",&k);
setList(&a);
deleteList(&a,i,k);//删除i-k的元素
printf("请输入要插入的元素x:");
scanf("%d",&x);
insertList(&a,x);//插入元素x
inversionList(&a);
ConvertList(&a);
return 0;
}
讨论技术欢迎加群:翻转世界IT 386707638线性表
最新推荐文章于 2025-08-11 18:37:27 发布