作业二 顺序表问题

来源:互联网 发布:晟元数据 副总 编辑:程序博客网 时间:2024/06/06 00:46

这里写图片描述

class Sqlist  //第二章作业 顺序表问题 {    Object listElem [];     int curLen;  // 1、编写顺序表的成员方法,实现顺序表就地逆置。     public void Reverse()     {         Object temp;         forint i=0 ;i<curLen/2 ; i++)         {              temp = listElem[i];              listElem[i]= listElem[curLen-1-i];              listElem[curLen-1-i]=temp;          }      }  //2、编写顺序表的成员方法,实现对顺序表循环右移K位。  //方法如下: 例循环右移3位:1234567(原数据) -》 4321 765 (分段逆序)-》 567 1234 (整体逆序)     public void moveRight()     {         Object temp;           int i,j ;        //前 curLen-k个元素逆序        for(i=0 ;i<(curLen-k)/2 ; i++)         {              j = curLen-k-1-i;  //与下标i元素交换的元素下标              temp = listElem[i];              listElem[i]= listElem[j];              listElem[j]=temp;          }        //后k个元素逆序         for (i=curLen-k,j=curLen-1 ; i<j ; i++,j--)               {                           temp = listElem[i];              listElem[i]= listElem[j];              listElem[j]=temp;          }         //整体逆序         forint i=0 ;i<curLen/2 ; i++)          {              temp = listElem[i];              listElem[i]= listElem[curLen-1-i];              listElem[curLen-1-i]=temp;          }     }  //3、编写顺序表的成员方法,实现在有序顺序表中插入一个新元素,使顺序表保持有序性。  // 此处采用方法,从后向前比较,边比较,边移动有关元素    public void insert(Object obj)    {            for(int i= curLen-1; i>=0 ;i-- )            {                 if (obj.compareTo(elem[i]) <0 )  // 此处调用类的compareTo方法,若元素类型没有此方法,应该在元素类型定义中补充此方法,若元素为简单类型,可以直接使用关系运算符                       elem[i+1] = elem[i] ;                else                       break;  //遇到比obj小的元素,停止查找的比较过程,找到obj的插入位置              }             elem[i+1] = obj;             curLen ++;    }}//4、    增加顺序表的运算: 找出线性表中的值最小的元素。   // 方法可以返回最小值本身,也可以返回最小值下标,此处返回最小值元素     public Object findMin( )     {            int min = 0 ;            for(int i=1;i<curLen;i++)             if ( listElem[i].compareTo(listElem[min]) <0 ) //两个元素比较大小时,要使用符合元素类型的比较方式。此处用compareTo方法。                   min = i;            return listElem[min];     }//5、    增加顺序表的运算: 删除线性表中所有值为x的元素。    // 方法对每一个元素进行判断,是否值为x,若是删除它,若不是,继续向后查找。    // 需要注意的是,删除一个x时,它所在的位置上将由其后继代替,此时应该就该位置上的元素继续判断是否为x       public void removeAll(Object x )      {          int i=0 ;          while ( i< curLen )          {             if ( listElem[i].equals(x))  // 找到x,删除              {                  for(int j=i+1;j<curLen;j++)                    listElem[j-1] = listElem[j];                curLen--;                 }             else                i++;          }      }}
原创粉丝点击