資料結構 Day 1 順序表 C語言實現
阿新 • • 發佈:2021-12-22
#include <stdio.h> #include <stdlib.h> #define MAXSIZE 100 typedef int ElemType; typedef struct SqList { ElemType *data; int length; } SqList; int InitSqList(SqList *sqlist) { sqlist->data = (SqList *) malloc(MAXSIZE * sizeof(ElemType)); } int Length(SqList sqlist) { return sqlist.length; } int LocateElem(SqList sqlist, ElemType e) { for (int i = 0; i < sqlist.length; i++) { if (sqlist.data[i] == e)return i; } return -1; } ElemType GetElem(SqList sqlist, int index) { if (index < 0 || index > sqlist.length - 1 || index >= MAXSIZE)return -1; return sqlist.data[index]; } int ListInsert(SqList *sqlist, int index, ElemType e) { if (index < 0 || index > sqlist->length || sqlist->length >= MAXSIZE)return -1; for (int i = sqlist->length - 1; i > index; i--) { sqlist->data[i + 1] = sqlist->data[i]; } sqlist->data[index] = e; sqlist->length++; return 0; } int ListDelete(SqList *sqlist, int index) { if (index < 0 || index >= sqlist->length || sqlist->length >= MAXSIZE || sqlist->length == 0)return -1; for (int i = index; i < sqlist->length - 1; i++) { sqlist->data[i] = sqlist->data[i + 1]; } sqlist->length--; return 0; } int PrintList(SqList sqlist) { if (sqlist.length <= 0)return -1; for (int i = 0; i < sqlist.length; i++) { printf("%d ", sqlist.data[i]); } return 0; } int Empty(SqList sqlist) { if (sqlist.length == 0)return 1; else return 0; } int Destroy(SqList *sqlist) { sqlist->length = 0; if (sqlist->data != NULL)free(sqlist->data); if (sqlist->data == NULL)return 1; else return 0; } int main(void) { SqList sqlist; InitSqList(&sqlist); printf("\n%d\n", Empty(sqlist)); for (int i = 0; i < 10; ++i) { ListInsert(&sqlist, i, i * i); } printf("\n%d\n\n", Empty(sqlist)); printf("\n"); PrintList(sqlist); printf("\n"); ListInsert(&sqlist, 5, 123); printf("GetElem(sqlist,5):%d\n", GetElem(sqlist, 5)); PrintList(sqlist); printf("\n"); ListDelete(&sqlist, 5); PrintList(sqlist); printf("\n"); printf("%d\n", Length(sqlist)); Destroy(&sqlist); printf("\n%d\n\n", Empty(sqlist)); return 0; }