1.1线性表(Linear List)
特点:
同一性。由同类数据元素组成。
有穷性。
有序性。相邻数据元素之间存在序偶关系。
1.2线性表的顺序存储
即物理结构和逻辑结构一致的线性表。
代码实现:
#include#include #define MAXSIZE 100 #define OK 1 #define ERROR 0 typedef int ElemType; typedef struct seqlist { ElemType elem[MAXSIZE]; int last; }SeqList; void InitList(SeqList* L); void PrintList(SeqList* L); int Locate(SeqList* L, ElemType e); ElemType GetElem(SeqList* L, int i); int InsList(SeqList* L, int i, ElemType e); int DelList(SeqList* l, int i, ElemType* e); void MergeList(SeqList* LA, SeqList* LB, SeqList* LC); void InitList(SeqList* L) { int i; L->last = 0; for (i = 0; i <= MAXSIZE; i++) { L->elem[i] = 0; } } void PrintList(SeqList* L) { int i = 0; while (i <= L->last) { printf("%d ", L->elem[i]); if ((i + 1) % 4 == 0) { printf("n"); } i++; } printf("nn"); } int Locate(SeqList* L, ElemType e) { int i = 0; while ((i <= L->last) && (L->elem[i] != e)) { i++; } if (i <= L->last) { return i+1; } else { printf("查无此元素!nn"); return ERROR; } } ElemType GetElem(SeqList* L, int i) { return L->elem[i]; } int InsList(SeqList* L, int i, ElemType e) { int j = 0; if (i < 1 || i > L->last + 2) { printf("插入位置不合法!nn"); return ERROR; } if (L->last >= MAXSIZE - 1) { printf("表已满,无法插入!nn"); return ERROR; } for (j = L->last + 1; j >= i; j--) { L->elem[j] = L->elem[j - 1]; } L->elem[i - 1] = e; L->last++; return OK; } int DelList(SeqList* L, int i, ElemType* e) { int j = 0; if (i < 1 || i > L->last + 1) { printf("删除位置不合法!"); return ERROR; } *e = L->elem[i - 1]; for (j = i - 1; j < L->last - 1; j++) { L->elem[j] = L->elem[j + 1]; } L->last--; return OK; } void MergeList(SeqList* LA, SeqList* LB, SeqList* LC) { int i = 0, j = 0, k = 0; while (i <= LA->last && j <= LB->last) { if (LA->elem[i] <= LB->elem[j]) { LC->elem[k] = LA->elem[i]; k++; i++; } else { LC->elem[k] = LB->elem[j]; k++; j++; } } while (j <= LB->last) { LC->elem[k] = LB->elem[j]; j++; k++; } while (i <= LA->last) { LC->elem[k] = LA->elem[i]; i++; k++; } LC->last = LA->last + LB->last + 1; } void SeqListTest() { } int main() { SeqListTest(); return 0; }



