问题描述
publicvoidReversSeqList(SeqList<int>L){inttmp=0;intlen=L.GetLength();for(inti=0;i<=len/2;++i){tmp=L[i];L[i]=L[len-i];L[len-i]=tmp;}问题是len值取得是数组L的长度,倒置方法中L[i]=L[len-i],我觉得应该是len-1-i请教下各位,解惑
解决方案
解决方案二:
publicclassSeqList<T>:IListDS<T>{privateintmaxsize;//顺序表的容量privateT[]data;//数组,用于存储顺序表中的数据元素privateintlast;//指示顺序表最后一个元素的位置//索引器publicTthis[intindex]{get{returndata[index];}set{data[index]=value;}}//最后一个数据元素位置属性publicintLast{get{returnlast;}}//容量属性publicintMaxsize{get{returnmaxsize;}set{maxsize=value;}}//构造器publicSeqList(intsize){data=newT[size];maxsize=size;last=-1;}//求顺序表的长度publicintGetLength(){returnlast+1;}//清空顺序表publicvoidClear(){last=-1;}//判断顺序表是否为空publicboolIsEmpty(){if(last==-1){returntrue;}else{returnfalse;}}false;}}//在顺序表的末尾添加新元素publicvoidAppend(Titem){if(IsFull()){Console.WriteLine("Listisfull");return;}data[++last]=item;}//在顺序表的第i个数据元素的位置插入一个数据元素publicvoidInsert(Titem,inti){if(IsFull()){Console.WriteLine("Listisfull");return;}if(i<1||i>last+2){Console.WriteLine("Positioniserror!");return;}if(i==last+2){data[last+1]=item;}else{for(intj=last;j>=i-1;--j){data[j+1]=data[j];}data[i-1]=item;}++last;}//删除顺序表的第i个数据元素publicTDelete(inti){Ttmp=default(T);if(IsEmpty()){Console.WriteLine("Listisempty");returntmp;}if(i<1||i>last+1){Console.WriteLine("Positioniserror!");returntmp;}if(i==last+1){tmp=data[last--];}else{tmp=data[i-1];for(intj=i;j<=last;++j){data[j]=data[j+1];}}--last;returntmp;}//获得顺序表的第i个数据元素publicTGetElem(inti){if(IsEmpty()||(i<1)||(i>last+1)){Console.WriteLine("ListisemptyorPositioniserror!");returndefault(T);}returndata[i-1];}//在顺序表中查找值为value的数据元素publicintLocate(Tvalue){if(IsEmpty()){Console.WriteLine("ListisEmpty!");return-1;}inti=0;for(i=0;i<=last;++i){if(value.Equals(data[i])){break;}}if(i>last){return-1;}returni;}
解决方案三:
看到++i没?
解决方案四:
引用2楼yuwenge的回复:
看到++i没?
如果是这样的话L[0],不就漏了吗?
解决方案五:
是++i,不是i++所以其实i是从1开始循环的
解决方案六:
还有L[1]=L[len-1]len-1是数组最后的元素1是数组的第二个元素,这样也是错的,应该是第一个与最后一个对换。
解决方案七:
空想没用你new个数组,里面放上1-9的数字然后执行一下代码,看变成什么了,就知道它到底有没有问题了
解决方案八:
书上写的可能并不全是对的也有些是书上写对了,但是你理解错了这都没关系写个代码,执行一下,就知道到底谁对了反正编译器不骗人
解决方案九:
我自己调试了下,++i,在第一次循环的时候,i不是自增,第二次循环时才是自增的。
解决方案十:
调试的时候我按书上len-i试了下,超过数组的长度,我认为应该是书上出了问题。