用C语言实现线性表的基本操作
时间: 2023-06-12 09:02:13 浏览: 128
好的,以下是用C语言实现线性表的基本操作:
```c
#include<stdio.h>
#include<stdlib.h>
#define MAXSIZE 100 //线性表的最大长度
typedef struct{
int data[MAXSIZE]; //存储元素的数组
int length; //线性表的当前长度
} SqList; //顺序表的结构体定义
//初始化线性表
void InitList(SqList *L){
L->length=0;
}
//插入元素
int ListInsert(SqList *L,int i,int e){
if(i<1||i>L->length+1){ //判断插入位置是否合法
return 0;
}
if(L->length==MAXSIZE){ //判断线性表是否已满
return 0;
}
for(int j=L->length;j>=i;j--){ //将插入位置及其后面的元素后移一位
L->data[j]=L->data[j-1];
}
L->data[i-1]=e; //插入新元素
L->length++; //线性表长度加1
return 1;
}
//删除元素
int ListDelete(SqList *L,int i){
if(i<1||i>L->length){ //判断删除位置是否合法
return 0;
}
for(int j=i;j<L->length;j++){ //将删除位置后面的元素前移一位
L->data[j-1]=L->data[j];
}
L->length--; //线性表长度减1
return 1;
}
//查找元素
int LocateElem(SqList *L,int e){
for(int i=0;i<L->length;i++){
if(L->data[i]==e){ //查找到元素
return i+1;
}
}
return 0; //未查找到元素
}
//输出线性表
void PrintList(SqList L){
for(int i=0;i<L.length;i++){
printf("%d ",L.data[i]);
}
printf("\n");
}
int main(){
SqList L;
InitList(&L);
ListInsert(&L,1,1);
ListInsert(&L,2,2);
printf("插入元素后的线性表为: ");
PrintList(L);
ListDelete(&L,2);
printf("删除元素后的线性表为: ");
PrintList(L);
int pos=LocateElem(&L,1);
printf("元素1的位置为: %d\n",pos);
return 0;
}
```
阅读全文