【C语言】静态顺序表的实现(包括头插、头删、尾插、尾删、查找、删除指定位置)
发表于:2024-11-30 作者:热门IT资讯网编辑
编辑最后更新 2024年11月30日,#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include#define MAXSIZE 100typedef int
#define _CRT_SECURE_NO_WARNINGS 1#includeusing namespace std;#include #define MAXSIZE 100typedef int DataType;typedef struct SeqList{ DataType _array[MAXSIZE]; size_t _size;}SeqList;void InitSeqList(SeqList* pSeq){ assert(pSeq); memset(pSeq->_array,0, sizeof(DataType)*MAXSIZE); pSeq->_size = 0;}void PushBack(SeqList* pSeq,DataType x){ assert(pSeq->_size< MAXSIZE); pSeq->_array[pSeq->_size++] = x;}void PopBack(SeqList* pSeq){ assert(pSeq->_size>0); --pSeq->_size;}void PushFront(SeqList* pSeq,DataType x){ assert(pSeq->_size < MAXSIZE); for (int i = pSeq->_size-1; i >= 0; i--) { pSeq->_array[i+1] = pSeq->_array[i]; } ++pSeq->_size; pSeq->_array[0] = x;}void PopFront(SeqList* pSeq){ assert(pSeq->_size > 0); for (int i = 1; i < pSeq->_size; i++) { pSeq->_array[i - 1] = pSeq->_array[i]; } --pSeq->_size;}void Insert(SeqList* pSeq,int pos, DataType x){ assert(pos >= 0); assert(pSeq->_size < MAXSIZE); for (int i = pSeq->_size - 1; i >= pos; i--) { pSeq->_array[i+1] = pSeq->_array[i]; } ++pSeq->_size; pSeq->_array[pos] = x;}int Find(SeqList*pSeq,DataType x){ int i = 0; for (i = 0; i < pSeq->_size; i++) { if (pSeq->_array[i] == x) { return i; } } return -1;}void Erase(SeqList* pSeq, int pos){ assert(pos > 0); for (int i = pos; i < pSeq->_size; i++) { pSeq->_array[i] = pSeq->_array[i + 1]; } --pSeq->_size;}void PrintSeqList(SeqList* pSeq){ if (pSeq->_size == 0) { printf("当前顺序表为空!"); return; } for (int i = 0; i < pSeq->_size; i++) { printf("%d ", pSeq->_array[i]); } printf("\n");}void Test(){ SeqList List; InitSeqList(&List); PushBack(&List,1); PushBack(&List, 2); PushBack(&List, 3); PushBack(&List, 4); PushBack(&List, 5); PushBack(&List, 6); PrintSeqList(&List); PopBack(&List); PopBack(&List); PopBack(&List); PrintSeqList(&List); PushFront(&List,0); PushFront(&List, -1); PushFront(&List, -2); PrintSeqList(&List); PopFront(&List); PopFront(&List); PopFront(&List); PrintSeqList(&List); int ret = Find(&List, 2); printf("%d\n", ret); Erase(&List, 1); PrintSeqList(&List); Insert(&List, 1, 2); PrintSeqList(&List);}int main(){ Test(); system("pause"); return 0;}