资源描述:
《数据结构与算法第03章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、{êâ((C++)Æ¡1nÙ:5L2009c1nÙ:5L•½Â•þ•üóL•Þ!:VóL•·óL•ÄS+n•Ý•é¡Ý•DÕÝ1½ÂList=(D,S)Ù¥D={d1,d1,···,dn},n≥0(d1,d2),(d1,d3),···,(d1,dn),(d2,d3),···,(d2,dn),S=···,···,···,(dn−1,dn)'XS±w¤5S'Xµd1≺d2≺···≺dn2cª, U¡di−1dicª.¡di+1di U.d1Ãcª§dnà U.D¥a.±´?¿.S¥kn(n−1)/2.3^S5L
2、:þ(Vector)^Ônþ¬ëYS5gêâa0,···,an−1a0a1······an−1^m^5NymS'X.4Vectora¤CþÚE¼êtemplate//TUk²Û¼êstructVector{T*elem_;intsize_;intcapacity_;Vector(intn=0,Tconst&t=T()):elem_(0),size_(0),capacity_(0){if(n>0){elem_=(T*)malloc(n*sizeof(T));uninitialized_fill(elem_,elem_+n,
3、t);size_=capacity_=n;}}virtual~Vector(void){free(elem_);}//Ù¦};5Vectoragã¼êtemplatestructVector{boolempty(void)const{returnsize_==0;}intsize(void)const{returnsize_;}};6VectoraSftemplatestructVector{typedefT*Iterator;Iteratorbegin(void){returnelem_;}Iteratorend
4、(void){returnelem_+size_;}};7¼þ¤templatestructVector{T&front(void){returnelem_[0];}T&back(void){returnelem_[size_-1];}T&operator[](intn){//0<=nstructVector{voidpop_back(void){--size_;}voiderase(Iteratorpos){memmove(pos,pos+1
5、,sizeof(T)*(elem_+--size_-pos));}};9þ;+ntemplatestructVector{voidreserve(intn){if(n>capacity_){elem_=(T*)realloc(elem_,n*sizeof(T));uninitialized_fill(elem_+size_,elem_+n,T());capacity_=n;}}protected:boolfull(void)const{returnsize_==capacity_;}intnext_capacity(void)const{re
6、turncapacity_<=0?1:2*capicity_;}};10þV¼êtemplatestructVector{voidpush_back(Tconst&t){//V3Üif(full())reserve(next_capacity());elem_[size_++]=t;}voidinsert(Iteratorpos,Tconst&t){//V3poscif(full()){intconstoffset=pos-elem_;reserve(next_capacity());pos=elem_+offset;}memmove(
7、pos+1,pos,sizeof(T)*(elem_+size_++-pos));*pos=t;}};11þÙ¦¤templatevoidVector::resize(intn,Tconst&t=T()){reserve(n);if(size_voidswap(Vector&a,Vector&b){std::swap(a.elem_,b.elem_);std::swap(a.si