importjava.util.*;classStacks{Vectors=newVector(100,50);inttop;intcount=0;voidInStacks(intdata){//进栈时间复杂度:1s.add(data);top=data;count++;}voidSho...
import java.util.*;
class Stacks{
Vector s =new Vector(100,50);
int top;
int count=0;
void InStacks(int data){ //进栈 时间复杂度 :1
s.add(data);
top=data;
count++;
}
void Show(){ //显示函数 时间复杂度 n+1 n与Vector长度有关。
Iterator it=s.iterator();
while(it.hasNext()){
System.out.print(" "+it.next());
}
}
int GetTop(){ //取栈顶 时间复杂度 1
System.out.println("栈顶为:"+top);
return top;
}
void OutStacks(){ //退栈 时间复杂度 n+1 n与Vector长度有关。
int out = 0;
int index=0;
Iterator it=s.iterator();
while(it.hasNext()){
out=it.next();
index++;
}
s.removeElement(index);
count--;
System.out.println("退出的是:"+out);
index=0;
}
int Spedata1(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i
int i =0; // {s.Instack(data); s,Spedata()}
Iterator it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}
Arrays.sort(sdata);
System.out.println("最小是:"+sdata[0]);
return sdata[count-1];
}
int Spedata2(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i
int i =0; // {s.Instack(data); s,Spedata()}
Iterator it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}
i=0;
Arrays.sort(sdata);
System.out.println("最大是:"+sdata[count-1]);
return sdata[count-1];
}
int [] Spedata3(){ //取最大 最小 中间值 时间复杂度 n+1
int sdata[] =new int[count]; //如果 主函数 中有 for(int i=0;i
int i =0; // {s.Instack(data); s.Spedata()}
int mid [] =new int[2];
Iterator it =s.iterator(); // 那么 时间复杂度为 (N+1)*(n+1)
while(it.hasNext()){
sdata[i]=it.next();
i++;
}
i=0;
Arrays.sort(sdata);
int m =count/2;
if(count%2==0){
System.out.println("中间数据"+sdata[m-1]+" "+sdata[m]);
mid[0]=sdata[m-1];
mid[1]=sdata[m];
return mid;
}
else{
System.out.println("中间数据"+sdata[m]);
mid[0]=sdata[m];
return mid;
}
}
}
展开