#include <stdio.h>
#include <stdlib.h>
#define MaxSize 50
typedef int ElemType;
typedef struct {
ElemType date[MaxSize];
int length;
}SqList;//定义顺序表的类型
//初始化顺序表
void InitList(SqList *&L) {
L = (SqList*)malloc(sizeof(SqList));
L->length = 0;
}
//判断顺序表是否为空
bool ListEmpty(SqList *L) {
return (L->length == 0);
}
//将数组元素加入顺序表
void CreateList(SqList *&L,ElemType arr[],int len) {
int i = 0;
L = (SqList*)malloc(sizeof(SqList));
while(i < len) {
L->date[i] = arr[i];
i++;
}
L->length = len;
}
//在指定位置插入元素
void ListInsert(SqList *&L, int k, ElemType e) {
int i;
if(k < 1 || k > L->length+1 || L->length == MaxSize) {
printf("插入位置有误!\n");
} else {
k--;
for(i = L->length; i > k; i--) {
L->date[i] = L->date[i-1];
}
L->date[k] = e;
L->length++;
}
}
//返回顺序表长度
int ListLength(SqList *L) {
return (L->length);
}
//删除指定位置元素
void ListDelete(SqList *&L, int k) {
int i;
if(k < 1 || k > L->length) {
printf("输入位置有误!\n");
} else {
k--;
for(i = k; i < L->length ;i++) {
L->date[i] = L->date[i+1];
}
L->length--;
}
}
//输出顺序表
void DispList(SqList *L) {
for(int i = 0; i < L->length; i++) {
printf("%d ",L->date[i]);
}
}
//销毁顺序表
void DeleteList(SqList *&L) {
free(L);
}
void m1(int *e) {
*e = 5;//传参引用
}
int main() {
int arr[5] = {1,2,3,4,5};
int e = 0;
SqList *L;//创建顺序表类型的指针
InitList(L);
printf("%d\n",ListEmpty(L));
CreateList(L,arr,5);
ListInsert(L,3,8);
ListDelete(L,3);
printf("%d\n",ListLength(L));
DispList(L);
DeleteList(L);
m1(&e);
printf("%d",e);
return 0;
}
//2023-12-11 22:15:51