2_模板.pptVIP

  • 2
  • 0
  • 约2.04万字
  • 约 58页
  • 2016-10-22 发布于河南
  • 举报
2_模板

【例6.3】顺序表类模板 template typename T,int size bool seqlistT,size::IsIn(T x){ int i=0; bool found=0; while(i=last !found) //换了一种方法来查找 if (slist[i]!=x) i++; else found=1; //找到 return found;} template typename T,int size T seqlistT,size::operator[](int i){ if(ilast+1||i0||i=Maxsize){ cout下标出界!endl; exit(1); } if(ilast) last++;//下标运算符[],只能增加表的元素,不能减少 return slist[i];} 【例6.3】顺序表类模板 template typename T,int size bool seqlistT,size::Insert(T x, int i){ int j; if (i0||ilast+1||last==Maxsize -1) return false; //插入位置不合理,不能插入(健壮性) else{ last++; for(j=last;ji;j--) slist[j]=slist[j-1]; //从表最后位置向前依次后移,空出指定位置来 slist[i]=x; return true;} } 【例6.3】顺序表类模板 template typename T,int size bool seqlistT,size::Remove(T x){ int i=Find(x),j; //先去找x在哪个位置 if(i=0){ last--; for(j=i;j=last;j++) slist[j]=slist[j+1]; //依次前移,保证表连续 return true;} return false; //表中不存在x } 【例6.3】顺序表类模板 template typename T,int size int seqlistT,size::Next(T x){ int i=Find(x); if(i=0 ilast) return i+1; //x后继位置 else return -1; //x不在表中,或在表末尾 } template typename T,int size int seqlistT,size::Prior(T x){ int i=Find(x); if(i0 i=last) return i-1; //x前驱的位置 else return -1; } 【例6.3】顺序表类模板 int main(){ seqlist int,100 seqlisti; //顺序表对象seqlisti的元素为整型 int i,j,k,a[10]={2,3,5,7,11,13,17,19,23,29}; for(j=0;j10;j++) //把素数写入 if (!seqlisti.Insert(a[j],j)){ cout表太大放不下了!endl; break; } j=seqlisti.Length(); for(i=0;ij;i++) coutseqlisti.Get(i) ; cout endl ; //打印出seqlisti.slist[]-素数表 for(j=0;j10;j++) seqlisti[j]=0; //采用下标运算符运算 for(j=0;j10;j++) coutseqlisti[j] ; coutendl; for(j=0;j10;j++) seqlisti[j]=a[j]; 【例6.3】顺序表类模板 seqlisti[10]=31; //实验能否增加元素 for(j=0;j11;j++) coutseqlisti[j] ; coutendl; k=7; if (seqlisti.IsIn(k)) cout素数7在顺序表中 endl; //因形参为引用,所以实参不可用整数常量7 else cout 素数7不在顺序表中endl; k=17; if (seqlisti.Remove (k)) cout删除素数17endl; //删除素数17 else cout找不到素数17,无法删除; j=seqlisti.Leng

文档评论(0)

1亿VIP精品文档

相关文档