- 补全下面顺序表的插入操作算法代码:
publicvoidinsert(inti, Objectx) { //0.1 满校验:存放实际长度 和 数组长度 一样if(curLen==listEle.length) { thrownewException("已满"); } //0.2 非法校验,在已有的数据中间插入 [0, curLen],必须连续,中间不能空元素if(i<0||i>curLen ) thrownewException("位置非法"); //1 将i及其之后后移for(intj=curLen ; j>i; j--) { listEle[j] =listEle[j-1]; } //2 插入i处listEle[i] =x; //3 记录长度curLen++; }
- 补全顺序表的删除算法代码
publicvoidremove(inti ) throwsException { // 0.1 校验非法数据if(i<0||i>curLen–1 ) { thrownewException("位置非法"); } // 1 将i之后向前移动for(intj=i ; j<curLen-1 ; j++ ) { listEle[j] =listEle[j+1]; } // 2 长度减一curLen--; }
- 补全顺序表的查找算法1代码
循环遍历已有数据,进行判断,如果有返回第一个索引号,如果没有返回-1
publicintindexOf(Objectx) { for(inti=0; i<curLen ; i++) { if( listEle[i].equals(x) ) { returni; } } return-1; }
- 补全顺序表的查找算法2代码:
使用变量记录没有匹配到索引
publicintindexOf(Objectx) { intj=0; //用于记录索引信息while(j<curLen&&!listElem[j].equals(x) ) j++; // j记录索引小于数量if(j<curLen ) { returnj; } else { return-1 } }
- 补全单链表长度算法:
publicclassNode{ publicObjectdata; //数据域publicNodenext; //指针域} publicintlength() { Nodep=head.next; // 获得第一个结点intlength=0; // 定义一个变量记录长度while(p!=null) { length++; //计数p=p.next; //p指向下一个结点 } returnlength; }
- 补全单链表按索引号(位序号)查找算法代码:
publicclassNode{ publicObjectdata; //数据域publicNodenext; //指针域} publicObjectget(inti) { Nodep=head.next; //获得头结点intj=0; //已经处理的结点数while(p!=null&&j<i ) { //链表没有下一个 && 处理有效部分p=p.next; j++; } if(i<0||p==null) { thrownewException("元素不存在"); } returnp.data; //返回数据}
- 补全按值查找索引算法代码:
publicclassNode{ publicObjectdata; //数据域publicNodenext; //指针域} publicObjectget(inti) { Nodep=head.next; //获得头结点intj=0; //已经处理的结点数while(p!=null&&j<i ) { //链表没有下一个 && 处理有效部分p=p.next; j++; } if(i<0||p==null) { thrownewException("元素不存在"); } returnp.data; //返回数据}
- 补全入栈算法代码
publicclassSqStack { privateObject[] stackElem; //栈对象数组privateinttop; //长度、下一个存储位置 等} publicvoidpush(Objectx) { if(top==stackElem.length ) { //栈满thrownewRuntimeException("栈满"); } else { stackElem[top] =x; top++; } }
- 1~n求和算法代码补全(n=10)
publicclassTestSum { publicstaticvoidmain(String[] args) { System.out.println(sum(10)); } privatestaticintsum(intn) { if(n==1) { return1; } returnn+sum(n-1); } }
- n!算法代码补全(n=10)
publicclassTestFactorial { publicstaticvoidmain(String[] args) { System.out.println(factorial(4)); } privatestaticintfactorial(intn) { if(n==1 ) { return1; } returnn*factorial(n-1); } }
- 斐波那契数列算法代码补全(n=10)
publicclassTestFibonacci { publicstaticvoidmain(String[] args) { for(inti=0 ; i<=10 ; i++) { System.out.print(fibonacci(i) +"、"); } } privatestaticintfibonacci(intn) { if(n==0) return0; if(n==1) return1; returnfibonacci(n-1) +fibonacci(n-2); }}
- 串的扩容算法代码补全
publicvoidallocate(intnewCapacity) { char[] temp=strvalue; // 存放原来的数据 ab数组strvalue=newchar[newCapacity]; // 给strValue重新赋一个更大数组的值for(inti=0; i<temp.length; i++) { // 拷贝数据strvalue[i] =temp[i]; } }
- 串的求子串算法代码补全
publicIStringsubstring(intbegin , intend) { // 1 两个参数校验if(begin<0||end>curlen||begin>end) { thrownewStringIndexOutOfBoundsException("条件不合法"); } // 2 优化:当前串直接返回if(begin==0&&end==curlen) returnthis; // 3 核心算法char[] buffer=newchar[end-begin]; // 构建新数组for(inti=0 ; i<buffer.length ; i++) { // 依次循环遍历新数组,一个一个赋值buffer[i] =strvalue[i+begin]; }