diff --git a/01线性表顺序存储_List.c b/01线性表顺序存储_List.c deleted file mode 100644 index aecff82..0000000 --- a/01线性表顺序存储_List.c +++ /dev/null @@ -1,233 +0,0 @@ - -#include "stdio.h" - -#include "stdlib.h" -#include "io.h" -#include "math.h" -#include "time.h" - -#define OK 1 -#define ERROR 0 -#define TRUE 1 -#define FALSE 0 - -#define MAXSIZE 20 /* 洢ռʼ */ - -typedef int Status; /* StatusǺ,ֵǺ״̬룬OK */ -typedef int ElemType; /* ElemType͸ʵΪint */ - -Status visit(ElemType c) -{ - printf("%d ", c); - return OK; -} - -typedef struct -{ - ElemType data[MAXSIZE]; /* 飬洢Ԫ */ - int length; /* Աǰ */ -} SqList; - -/* ʼ˳Ա */ -Status InitList(SqList *L) -{ - L->length = 0; - return OK; -} - -/* ʼ˳ԱLѴڡLΪձ򷵻TRUE򷵻FALSE */ -Status ListEmpty(SqList L) -{ - if (L.length == 0) - return TRUE; - else - return FALSE; -} - -/* ʼ˳ԱLѴڡLΪձ */ -Status ClearList(SqList *L) -{ - L->length = 0; - return OK; -} - -/* ʼ˳ԱLѴڡLԪظ */ -int ListLength(SqList L) -{ - return L.length; -} - -/* ʼ˳ԱLѴڣ1iListLength(L) */ -/* eLеiԪصֵ,עiָλã1λõǴ0ʼ */ -Status GetElem(SqList L, int i, ElemType *e) -{ - if (L.length == 0 || i < 1 || i > L.length) - return ERROR; - *e = L.data[i - 1]; - - return OK; -} - -/* ʼ˳ԱLѴ */ -/* Lе1eϵԪصλ */ -/* Ԫزڣ򷵻ֵΪ0 */ -int LocateElem(SqList L, ElemType e) -{ - int i; - if (L.length == 0) - return 0; - for (i = 0; i < L.length; i++) - { - if (L.data[i] == e) - break; - } - if (i >= L.length) - return 0; - - return i + 1; -} - -/* ʼ˳ԱLѴ,1iListLength(L) */ -/* Lеiλ֮ǰµԪeLijȼ1 */ -Status ListInsert(SqList *L, int i, ElemType e) -{ - int k; - if (L->length == MAXSIZE) /* ˳ԱѾ */ - return ERROR; - if (i < 1 || i > L->length + 1) /* iȵһλС߱һλúһλûҪʱ */ - return ERROR; - - if (i <= L->length) /* λòڱβ */ - { - for (k = L->length - 1; k >= i - 1; k--) /* Ҫλ֮Ԫƶһλ */ - L->data[k + 1] = L->data[k]; - } - L->data[i - 1] = e; /* Ԫز */ - L->length++; - - return OK; -} - -/* ʼ˳ԱLѴڣ1iListLength(L) */ -/* ɾLĵiԪأeֵLijȼ1 */ -Status ListDelete(SqList *L, int i, ElemType *e) -{ - int k; - if (L->length == 0) /* ԱΪ */ - return ERROR; - if (i < 1 || i > L->length) /* ɾλòȷ */ - return ERROR; - *e = L->data[i - 1]; - if (i < L->length) /* ɾλ */ - { - for (k = i; k < L->length; k++) /* ɾλúԪǰ */ - L->data[k - 1] = L->data[k]; - } - L->length--; - return OK; -} - -/* ʼ˳ԱLѴ */ -/* ζLÿԪ */ -Status ListTraverse(SqList L) -{ - int i; - for (i = 0; i < L.length; i++) - visit(L.data[i]); - printf("\n"); - return OK; -} - -void unionL(SqList *La, SqList Lb) -{ - int La_len, Lb_len, i; - ElemType e; - La_len = ListLength(*La); - Lb_len = ListLength(Lb); - for (i = 1; i <= Lb_len; i++) - { - GetElem(Lb, i, &e); - if (!LocateElem(*La, e)) - ListInsert(La, ++La_len, e); - } -} - -int main() -{ - - SqList L; - SqList Lb; - - ElemType e; - Status i; - int j, k; - i = InitList(&L); - printf("ʼLL.length=%d\n", L.length); - for (j = 1; j <= 5; j++) - i = ListInsert(&L, 1, j); - printf("Lıͷβ15L.data="); - ListTraverse(L); - - printf("L.length=%d \n", L.length); - i = ListEmpty(L); - printf("LǷգi=%d(1: 0:)\n", i); - - i = ClearList(&L); - printf("LL.length=%d\n", L.length); - i = ListEmpty(L); - printf("LǷգi=%d(1: 0:)\n", i); - - for (j = 1; j <= 10; j++) - ListInsert(&L, j, j); - printf("Lıββ110L.data="); - ListTraverse(L); - - printf("L.length=%d \n", L.length); - - ListInsert(&L, 1, 0); - printf("Lıͷ0L.data="); - ListTraverse(L); - printf("L.length=%d \n", L.length); - - GetElem(L, 5, &e); - printf("5ԪصֵΪ%d\n", e); - for (j = 3; j <= 4; j++) - { - k = LocateElem(L, j); - if (k) - printf("%dԪصֵΪ%d\n", k, j); - else - printf("ûֵΪ%dԪ\n", j); - } - - k = ListLength(L); /* kΪ */ - for (j = k + 1; j >= k; j--) - { - i = ListDelete(&L, j, &e); /* ɾj */ - if (i == ERROR) - printf("ɾ%dʧ\n", j); - else - printf("ɾ%dԪֵΪ%d\n", j, e); - } - printf("LԪأ"); - ListTraverse(L); - - j = 5; - ListDelete(&L, j, &e); /* ɾ5 */ - printf("ɾ%dԪֵΪ%d\n", j, e); - - printf("LԪأ"); - ListTraverse(L); - - //һ10Lb - i = InitList(&Lb); - for (j = 6; j <= 15; j++) - i = ListInsert(&Lb, 1, j); - - unionL(&L, Lb); - - printf("ϲLbLԪأ"); - ListTraverse(L); - getchar(); - return 0; -}