#include <stdio.h>
#define Maxsize 50
#define FALSE 0
#define TRUE 1
typedef int ElemType;
typedef int Status;
typedef struct{
ElemType data[Maxsize];
int length;
}SqList;
Status LocateElem(SqList L,int e){//按值查找
int i;
if(L.length==0)
return FALSE;
for(i=0;i<L.length;i++){
if(L.data[i]==e)
return i+1;
}
return FALSE;
}
Status Insert(SqList L,int i,int e){//插入操作
int j;
if(L.length==Maxsize)
return FALSE;
if(i<1||i>L.length+1)
return FALSE;
for(j=L.length-1;j>=i-1;j--)
L.data[j+1]=L.data[j];
L.data[i-1]=e;
L.length++;
return TRUE ;
}
Status Delete(SqList L,int i){//删除操作
int j;
if(L.length==0)
return FALSE;
for(j=i;j<L.length;j++){
L.data[j-1]=L.data[j];
}
L.length--;
return TRUE;
}
SqList CreateList(SqList L){
int i;
L.length=30;
for(i=0;i<L.length;i++){
L.data[i]=i+1;
}
return L;
}
void printSqList(SqList L){
int i;
for(i=0;i<L.length;i++){
printf("顺序表第%d个元素值为%d\n",i+1,L.data[i]);
}
printf("\n\n");
}
void main(){
int k;
int e; //待查元素
int insertData;//待插元素
int insert_location,delete_location;//插入位置及删除位置
int isInserted,isDeleted;//判断是否插入或删除成功
SqList L=CreateList(L);
printSqList(L);
printf("请输入您要查找的值:");
scanf("%d",&e);
k=LocateElem(L,e);
printf("您要查找的值在顺序表第%d个\n",k);
printf("\n\n");
printf("请输入您要插入的位置:");
scanf("%d",&insert_location);
printf("\n");
printf("请输入您要插入的值:");
scanf("%d",&insertData);
isInserted=Insert(L,insert_location,insertData);
if(isInserted){
printf("%d",L.data[insert_location-1]);
}
printf("\n\n");
printf("请输入您要删除的位置:");
scanf("%d",&delete_location);
printf("\n");
isDeleted=Delete(L,delete_location);
if(isDeleted){
printf("\n");
printSqList(L);
}
}
你的代码中的插入和删除操作根本就无法实现,应为函数无法修改main()函数中传入的实参变量的,把形参改成指针才行
代码改成如下:
#include <stdio.h>如果是C++可以把函数变成引用,那更简单