代码:
//用顺序存储结构实现线性表
#include<stdio.h>
#define MAXSIZE 11
//c语言中没有bool类型,想要使用的话需要自己定义
typedef int bool;
#define true 1
#define false 0
typedef struct{
int data[MAXSIZE]; //data[0]不放东西
int length;
}Sqlist;
//如果是指针类型,不能用L.data[i]访问
void initList(Sqlist *L){
for(int i=0;i<MAXSIZE;i++){
L->data[i]=0; //将所有元素设置为默认初始值
}
L->length=0; //顺序表初始长度为0
}
//i表示插入data[i]
bool listInsert(Sqlist *L,int i,int e){
if(i<1||i>L->length+1){
return false;
}
if(L->length>MAXSIZE-1){
return false;
}
for(int j=L->length;j>i;j--){
L->data[j+1]=L->data[j];
}
L->data[i]=e;
L->length++;
return true;
}
//删除data[i]
bool listDelete(Sqlist *L,int i,int *e){
if(i<=0||i>L->length||L->length==0){
return false;
}
*e=L->data[i];
for(int j=i;j<L->length;j++){
L->data[j]=L->data[j+1];
}
L->length--;
return true;
}
//返回data[i]的值
int getElem(Sqlist L,int i){
return L.data[i];
}
//找出元素值为e的数组下标
int locateElem(Sqlist L,int e){
for(int i=1;i<=L.length;i++){
if(L.data[i]==e){
return i;
}
}
return 0;
}
void printList(Sqlist L){
for(int i=1;i<=L.length;i++){
printf("%d ",L.data[i]);
}
printf("\n");
}
int main(){
Sqlist L;
initList(&L);
listInsert(&L,1,1);
listInsert(&L,2,3);
listInsert(&L,3,4);
listInsert(&L,4,5);
printList(L);
int e=-1;
if(listDelete(&L,3,&e)){
printf("删除元素为%d\n",e);
}else{
printf("删除失败\n");
}
printf("数组下标为3的值是%d\n",getElem(L,3));
printf("元素值为1的下标为%d\n",locateElem(L,1));
printList(L);
return 0;
}
运行结果: