1.线性表 -- 顺序表.md 2.1 KB

#include <stdio.h>
#define MaxSize 50
typedef struct {
    int data[MaxSize];
    int length;
} SqList;

void PrintList(SqList List) {
    printf("data[");
    for (int i = 0; i < List.length; ++i) {
        if (i == List.length - 1) {
            printf("%d", List.data[i]);

        } else {
            printf("%d, ", List.data[i]);
        }
    }
    printf("], Length=%d\n", List.length);
}

//按位查找--位序
int ListGetElement(SqList List, int i) {
    if (i < 1 || i > List.length + 1) {
        return 0;
    }
    return List.data[i - 1];
}


//按值查找--位序
int ListSearchElement(SqList List, int e) {
    for (int i = 0; i < List.length; ++i) {
        if (List.data[i] == e) {
            return i + 1;
        }
    }
    return 0;
}

//顺序插入--位序
bool ListInsert(SqList &List, int i, int e) {
    if (i < 1 || i > List.length + 1) {
        return false;
    }
    if (List.length >= MaxSize) {
        return false;
    }
    for (int j = List.length; j >= i; j--) {
        List.data[j] = List.data[j - 1];
    }
    List.data[i - 1] = e;
    List.length++;
    return true;
}

//删除元素--位序
bool ListDelete(SqList &List, int i, int &e) {
    if (i < 1 || i > List.length) {
        return false;
    }
    e = List.data[i - 1];
    for (int j = i; j < List.length; ++j) {
        List.data[j - 1] = List.data[j];
    }
    List.length--;
    return true;
}

bool ListSetElement(SqList &List, int i, int e) {
    if (i < 1 || i > List.length) {
        return false;
    }
    List.data[i - 1] = e;
    return true;
}

int main() {
    SqList sqList;
    for (int i = 0; i < 10; ++i) {
        ListInsert(sqList, i + 1, i + 1);
    }
    PrintList(sqList);
    ListInsert(sqList, 11, 11);
    PrintList(sqList);
    ListInsert(sqList, 51, 51);
    PrintList(sqList);
    int result = ListGetElement(sqList, 10);
    printf("Get result=%d\n", result);
    result = ListSearchElement(sqList, 8);
    printf("Search result=%d\n", result);
    ListDelete(sqList, 7, result);
    printf("Delete result=%d\n", result);
    PrintList(sqList);
    ListSetElement(sqList, 10, 100);
    PrintList(sqList);
    return 0;
}