package exercise;
import stack.sqstack;
import java.util.Scanner;
public class nizhi {
public int[] shunizhi(int[] x)throws Exception{
if(x!=null){
sqstack sq=new sqstack(x.length);
for(int i=0;i<x.length;i++){
sq.push(x[i]);
}
while(!sq.isEmpty()){
for(int i=0;i<x.length;i++){
x[i]=(int)sq.pop();
}
}
return x;
}else
return null;
}
public static void main(String[] args) throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("请输入数组的大小:");
int n=sc.nextInt();
int[] ar=new int[n];
System.out.println("请输入数组的元素:");
for(int i=0;i<n;i++){
ar[i]=sc.nextInt();
}
System.out.print("逆置以前的数组为: ");
for(int i=0;i<n;i++){
System.out.print(ar[i]+" ");
}
nizhi a=new nizhi();
a.shunizhi(ar);
System.out.print(" 逆置操做以后的数组为");
for(int i=0;i<n;i++){
System.out.print(ar[i]+" ");
}
}
} java
结果:数组
请输入数组的大小:
5
请输入数组的元素:
23
56
47
55
78
逆置以前的数组为: 23 56 47 55 78 逆置操做以后的数组为78 55 47 56 23 函数
所谓的回文序列就是正读和反读都是相同的字符序列,例如:abba和abdba均为回文序列。要求只使用栈来实现。ui
代码:(链栈实现)spa
package exercise;
import stack.Linkstack;
import java.util.Scanner;
public class Ishuiwen {
public boolean ishui(String x) throws Exception
{
Linkstack sq=new Linkstack();
int index=0;
int l=0;
while(index<x.length()){
sq.push(x.charAt(index));
//System.out.println(sq.peek());
index++;
}
for(int i=0;i<x.length();i++){
if(sq.peek()!=null){
String t=sq.pop().toString();
//System.out.println("sq.pop()="+t);
char q=t.charAt(0);
//System.out.println("x.charAt(i)="+x.charAt(i));
if(x.charAt(i)==q)
++l;
}
}
//System.out.println("index="+index);
//System.out.println("l="+l);
return l==x.length()?true:false;
}//ishu
public static void main(String[] args)throws Exception{
Scanner sc=new Scanner(System.in);
System.out.println("请输入要判断的字符串:");
String s=new String();
s=sc.nextLine();
Ishuiwen hui=new Ishuiwen();
boolean a=hui.ishui(s);
System.out.println("您输入的字符串:"+s+" ?回文:"+a);
}
} 设计
结果:ci
请输入要判断的字符串:
ghasrharhahhahrthrsahg
您输入的字符串:ghasrharhahhahrthrsahg ?回文:false字符串
3.设计一个将十进制数转化为二进制的方法。io
代码:class
package exercise;
import stack.Linkstack;
import java.util.Scanner;
public class JZzh {
public void sh2er(int a)throws Exception{
Linkstack s=new Linkstack();
while(a/2!=0){
int t=a%2;//取余数为低位作push操做
s.push(t);
a=a/2;
}
if(a!=0)//最高为不为0,则再次执行push操做
s.push(a);
String er=new String();
while(s.peek()!=null)//输出栈中的元素,逆置
er=er.concat(s.pop().toString());
System.out.println("转换后的二进制整数为:"+er);
}
public static void main(String[] args)throws Exception{
JZzh jinzhi=new JZzh();
Scanner sc=new Scanner(System.in);
System.out.println("请输入要转换的十进制整数:");
int b=sc.nextInt();
jinzhi.sh2er(b);
}
}
结果:
请输入要转换的十进制整数:
16
转换后的二进制整数为:10000