动态顺序表的初始化及增删查改

#pragma once#include
#include
#include
#include
typedef int DataType;typedef struct SeqList{ DataType* _array; size_t _size; size_t _capacity;}SeqList;void InitSeqList(SeqList *pSeq){ assert(pSeq); pSeq->_capacity=10; pSeq->_array=(DataType*)malloc(sizeof(DataType)*pSeq->_capacity); pSeq->_size=0;}void PrintSeqList(SeqList *pSeq){ int i=0; assert(pSeq); for(;(size_t)i
_size;i++) { printf("%d ",pSeq->_array[i]); } printf("\n");}void PushBack(SeqList *pSeq, DataType x){ DataType* tmp; assert(pSeq); if(pSeq->_size>=pSeq->_capacity) { pSeq->_capacity *=2; tmp=(DataType*)malloc(sizeof(DataType)*pSeq->_capacity); memcpy(tmp,pSeq->_array,sizeof(DataType)*pSeq->_size); free(pSeq->_array); pSeq->_array=tmp; } else { pSeq->_array[pSeq->_size++]=x; }}void Popback(SeqList* pSeq){ assert(pSeq); if(pSeq->_size==0) { printf("SeqList is empty!\n"); return; } else { //pSeq->_array[--pSeq->_size]=0;//和[--pSeq->_size]有什么区别 pSeq->_size--; }}void PushFront(SeqList *pSeq,DataType x){ DataType* tmp; int i; assert(pSeq); if(pSeq->_size>=pSeq->_capacity) { pSeq->_capacity *=2; tmp=(DataType*)malloc(sizeof(DataType)*pSeq->_capacity); memcpy(tmp,pSeq->_array,sizeof(DataType)*pSeq->_size); free(pSeq->_array); pSeq->_array=tmp; } else { for(i=pSeq->_size;i>0;i--) { pSeq->_array[i]=pSeq->_array[i-1]; } pSeq->_array[i]=x; pSeq->_size++; }}void PopFront(SeqList*pSeq){ int i; assert(pSeq); if(pSeq->_size==0) { printf("SeqList is null!"); return; } else { for(i=0;i
_size;i++) { pSeq->_array[i]=pSeq->_array[i+1];     } pSeq->_size--; }}void Insert(SeqList *pSeq,size_t pos,DataType x){ size_t i; DataType* tmp; assert(pSeq); if(pSeq->_size>=pSeq->_capacity) { pSeq->_capacity *=2; tmp=(DataType*)malloc(sizeof(DataType)*pSeq->_capacity); memcpy(tmp,pSeq->_array,sizeof(DataType)*pSeq->_size); free(pSeq->_array); pSeq->_array=tmp; } else { for(i=pSeq->_size;i>=pos;i--) { pSeq->_array[i+1]=pSeq->_array[i]; } pSeq->_array[pos]=x; pSeq->_size++; }}void Erase(SeqList *pSeq,size_t pos)//删掉某一位置的元素{ size_t i; assert(pSeq); if(pos>pSeq->_size) { printf("Seqlist is not exist!"); } else { for(i=pos;i
_size;i++)     { pSeq->_array[i-1]=pSeq->_array[i];//换成这个为什么不行 pSeq->_array[i]=pSeq->_array[i+1]; } pSeq->_size--; }}int Find(SeqList *pSeq,DataType x){ int i; assert(pSeq); for(i=0;i<=pSeq->_size;i++) { if(x==pSeq->_array[i]) { return i; } else { return -1; } }}void Remove(SeqList *pSeq,DataType x){ int i,ret; assert(pSeq); ret=Find(pSeq,x); if(ret==-1) { printf("SeqList is not exist!\n"); } else { for(i=ret;i
_size;i++) { pSeq->_array[i]=pSeq->_array[i+1]; } pSeq->_size--; }}void RemoveAll(SeqList *pSeq,DataType x){ size_t FirstIndex=0; size_t SecondIndex=0; size_t count=0; assert(pSeq); while(FirstIndex
_size) { if(pSeq->_array[FirstIndex]==x) { count++; } else { pSeq->_array[SecondIndex]=pSeq->_array[FirstIndex]; SecondIndex++; } FirstIndex++; } pSeq->_size=count;}void Modify(SeqList *pSeq,size_t pos,DataType x){ assert(pSeq); pSeq->_array[pos]=x; }