线性表的顺序存储结构c++
时间: 2023-05-31 08:02:47 浏览: 56
#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 ListEmpty(SqList L){
if(L.length == 0)
return 1;
else
return 0;
}
// 获取线性表的长度
int ListLength(SqList L){
return L.length;
}
// 获取线性表中某个位置的元素
int GetElem(SqList L, int i){
if(i < 1 || i > L.length){
printf("位置不合法!\n");
exit(1);
}
return L.data[i-1];
}
// 查找某个元素在线性表中的位置
int LocateElem(SqList L, int e){
int i;
for(i = 0; i < L.length; i++){
if(L.data[i] == e)
return i+1;
}
return 0;
}
// 插入元素
int ListInsert(SqList *L, int i, int e){
int j;
if(i < 1 || i > L->length+1){
printf("位置不合法!\n");
return 0;
}
if(L->length == MAXSIZE){
printf("线性表已满!\n");
return 0;
}
for(j = L->length-1; j >= i-1; j--){
L->data[j+1] = L->data[j];
}
L->data[i-1] = e;
L->length++;
return 1;
}
// 删除元素
int ListDelete(SqList *L, int i){
int j;
if(i < 1 || i > L->length){
printf("位置不合法!\n");
return 0;
}
for(j = i; j < L->length; j++){
L->data[j-1] = L->data[j];
}
L->length--;
return 1;
}
// 输出线性表
void PrintList(SqList L){
int i;
if(ListEmpty(L)){
printf("线性表为空!\n");
return;
}
printf("线性表中的元素为:");
for(i = 0; i < L.length; i++){
printf("%d ", L.data[i]);
}
printf("\n");
}
int main(){
SqList L;
InitList(&L);
printf("线性表的长度为:%d\n", ListLength(L));
ListInsert(&L, 1, 10);
ListInsert(&L, 2, 20);
ListInsert(&L, 3, 30);
ListInsert(&L, 4, 40);
ListInsert(&L, 5, 50);
PrintList(L);
printf("线性表中第3个位置的元素为:%d\n", GetElem(L, 3));
printf("元素20在线性表中的位置为:%d\n", LocateElem(L, 20));
ListDelete(&L, 4);
PrintList(L);
return 0;
}