1.顺序表的简单操作

发布时间 2023-12-11 22:22:01作者: ZZH的青青草原
#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