zoukankan      html  css  js  c++  java
  • 数据结构(java语言描述)栈(队列)习题

    1.编写一个函数,要求借助一个栈把数组中的数据元素逆置

      代码实现(顺序栈实现)

    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]+" ");
        }
    }
    }  

    结果:

    请输入数组的大小:
    5
    请输入数组的元素:
    23
    56
    47
    55
    78
    逆置之前的数组为: 23 56 47 55 78  逆置操作之后的数组为78 55 47 56 23

    2.编写一个函数判断一个字符序列是否为一个回文序列。

    所谓的回文序列就是正读和反读都是相同的字符序列,例如:abba和abdba均为回文序列。要求只使用栈来实现。

    代码:(链栈实现)

    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);
    }
    }

    结果:

    请输入要判断的字符串:
    ghasrharhahhahrthrsahg
    您输入的字符串:ghasrharhahhahrthrsahg ?回文:false

    3.设计一个将十进制数转化为二进制的方法。

    代码:

    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

  • 相关阅读:
    phpcs
    asp.net之cookie
    ajax技术
    union、except和intersect查询
    外连接查询
    对查询结果分组
    聚合函数查询
    数据库的约束
    数据库备份
    fusionCharts
  • 原文地址:https://www.cnblogs.com/xleer/p/5304017.html
Copyright © 2011-2022 走看看