#pragma once #define __SEQ_LIST__ #ifdef __SEQ_LIST__ #include <stdio.h> #include <assert.h> #include <string.h> #define MAX_SIZE 100 typedef int DataType; typedef struct SeqList { DataType array[MAX_SIZE]; size_t size; }SeqList; //typedef struct SeqList SeqList; void InitSeqList(SeqList* pSeq); void PrintSeqList(SeqList* pSeq); void PushBack(SeqList* pSeq, DataType x); void PopBack(SeqList* pSeq); void PushFront(SeqList* pSeq, DataType x); void PopFront(SeqList* pSeq); void Insert(SeqList* pSeq, size_t index, DataType x); void Modified(SeqList* pSeq, size_t index, DataType x); void removed(SeqList* pSeq, size_t index); #endif // __SEQ_LIST__ #include "SeqList.h" //初始化数组为0 void InitSeqList(SeqList* pSeq) { assert(pSeq); memset(pSeq->array, 0, MAX_SIZE*sizeof(DataType)); pSeq->size = 0; } //打印数组 void PrintSeqList(SeqList* pSeq) { size_t i = 0; assert(pSeq); for (; i < pSeq->size; ++i) { printf("%d ", pSeq->array[i]); } printf("\n"); } //从数组的后边插入数 void PushBack(SeqList* pSeq, DataType x) { assert(pSeq != NULL); if (pSeq->size > MAX_SIZE - 1) { printf("SeqList Is Full\n"); return; } pSeq->array[(pSeq->size)++] = x; } //从数组的后边删除数 void PopBack(SeqList* pSeq) { assert(pSeq); if (pSeq->size < 1) { printf("SeqList Is Empty\n"); return; } //pSeq->array[--(pSeq->size)] = 0; --pSeq->size; } //从数组的前边插入数 void PushFront(SeqList* pSeq, DataType x) { assert(pSeq); int i; for (i = pSeq->size; i>0; i--) { pSeq->array[i] = pSeq->array[i - 1]; } pSeq->array[0] = x; pSeq->size++; } //从数组的前边删除数 void PopFront(SeqList* pSeq) { assert(pSeq); size_t i; if (pSeq->size > 0) { for (i = 0; i < pSeq->size; i++) { pSeq->array[i] = pSeq->array[i + 1]; } pSeq->size--; } else printf("SeqList Is Empty!"); } // 插入x到index位置 void Insert(SeqList* pSeq, size_t index, DataType x) { assert(pSeq); assert(index<=pSeq->size); size_t i; for (i = pSeq->size; i>index; i--) { pSeq->array[i] = pSeq->array[i - 1]; } pSeq->array[index] = x; pSeq->size++; } //改变index处的数为x void Modified(SeqList* pSeq, size_t index, DataType x) { assert(pSeq); assert(index < pSeq->size); pSeq->array[index] = x; } //删除index处的数 void removed(SeqList* pSeq, size_t index) { assert(pSeq); assert(index < pSeq->size); size_t i; for (i = index; i < pSeq->size; i++) { pSeq->array[i] = pSeq->array[i + 1]; } pSeq->size--; } #include "SeqList.h" // InitSeqList // PushBack // PopFront // PopFront // PopBack void Test1() { SeqList s; InitSeqList(&s); PushBack(&s, 1); PushBack(&s, 2); PushBack(&s, 3); PushBack(&s, 4); PrintSeqList(&s); //PushFront(&s, 99); //PrintSeqList(&s); PopFront(&s); PrintSeqList(&s); //PopBack(&s); //PopBack(&s); //PrintSeqList(&s); } // PushFront // PopFront void Test2() { SeqList s; InitSeqList(&s); //PushFront(&s, 1); //PushFront(&s, 2); //PushFront(&s, 3); //PushFront(&s, 4); //PrintSeqList(&s); //PopFront(&s); //PopFront(&s); //PopFront(&s); PrintSeqList(&s); } // Insert // Modified // removed void Test3() { SeqList s; InitSeqList(&s); Insert(&s, 0, 0); Insert(&s, 1, 1); Insert(&s, 2, 2); Insert(&s, 3, 3); PrintSeqList(&s); Insert(&s, 1, 10); PrintSeqList(&s); Modified(&s, 1, 99); PrintSeqList(&s); removed(&s, 2); PrintSeqList(&s); } int main() { //Test1(); //Test2(); Test3(); return 0; }
时间: 2024-10-26 03:38:36