java线性表的相关操作讲解和源代码

java线性表的相关操作


1.具体要求
JAVA实训,实现线性表的相关操作,其中操作有:建立线性表、向线性表中插入元素、删除线性表中的元素、修改线性表中的元素、清空线行表、将线性表中的元素显示到操作界面上,所有操作都在GUI界面上进行。
2.结构如下图:
在这里插入图片描述
具体代码就不讲解了。直接上效果图和源代码。界面做的有点low大家见谅,因为这是很久之前做的程序了。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.源代码:

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.*;
public class Lis implements ActionListener{
    JFrame f;
    JPanel p1,p2;
    JButton b1,b2,b3,b4,b5,b6,b7,jb1,jb2,jb3,jb4,jb5,jb6,jb7;
    JDialog dialog,dialog1,dialog3,dialog4,dialog5;
    String str1,str3=" ",message;
    String str2=" ";
    StringBuffer str4;
    JTextField tf,tf1,tf2,tf3,tf4,tf5;
    ArrayList<Integer> ar1=new ArrayList<Integer>();
    ArrayList<Integer> ar=new ArrayList<Integer>(); //创建ArrayList用于存线性表
    public void Lis(){
        f=new JFrame("\u7EBF\u6027\u8868\u7684\u76F8\u5173\u64CD\u4F5C");
        p1=new JPanel();
        p2=new JPanel();
        b1=new JButton("线性表的建立");
        b2=new JButton("插入元素");
        b3=new JButton("删除元素");
        b4=new JButton("修改元素");
        b5=new JButton("显示操作后的线性表");
        b6=new JButton("清空线性表");
        b7=new JButton("线性表的合并");
        GridLayout grid1=new GridLayout(2,1);
        Container cp=f.getContentPane();
        FlowLayout grid2=new FlowLayout();
        FlowLayout grid3=new FlowLayout();
        f.setLayout(grid1);
        p1.setLayout(grid2);
        p2.setLayout(grid3);
        p1.add(b1);
        b1.addActionListener(this);
        p1.add(b2);
        b2.addActionListener(this);
        p1.add(b6);
        b6.addActionListener(this);
        p2.add(b3);
        b3.addActionListener(this);
        p2.add(b7);
        b7.addActionListener(this);
        p2.add(b4);
        b4.addActionListener(this);
        p2.add(b5);
        b5.addActionListener(this);
        f.add(p1);
        f.add(p2);
        f.setBounds(50, 50, 370, 200);
        f.setVisible(true);
        f.addWindowListener(new WinLis());
    }
    class WinLis extends WindowAdapter
    {
        public void windowClosing(WindowEvent e)
        {
            System.exit(0);
        }
    }
    public static void main(String[] args) {
        Lis t=new Lis();
        t.Lis();
    }
    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource()==b1) //显示线性表建立对话框
        {
            dial1();
        }
        if(e.getSource()==b2)//显示插入元素对话框
        {
            if(!ar.isEmpty())//判断线性表是否为空,若为空则不弹出插入元素的对话框,否则弹出插入元素的对话框
            {
                dial2();
            }else{
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        }
        if(e.getSource()==b3)//显示删除元素对话框
        {
            if(!ar.isEmpty())//判断线性表是否为空,若为空则不弹出删除元素的对话框,否则弹出删除元素的对话框
            {
                dial3();
            }else{
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        }
        if(e.getSource()==b4) //显示修改元素的对话框
        {
            if(!ar.isEmpty())  //判断线性表是否为空,若为空则不弹出修改元素的对话框,否则弹出修改元素的对话框
            {
                dial4();
            }else{
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        }
        if(e.getSource()==b7)
        {
            if(!ar.isEmpty())//判断线性表是否为空,若为空则不弹出建立线性表的对话框,否则弹出建立线性表的对话框
            {
                dial5();
            }else{
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }


        }
        if(e.getSource()==b6)//清空线性表
        {
            if(!ar.isEmpty())//判断线性表是否为空,若为空则不清空线性表,否则清空线性表
            {
                ar.clear();
                message="  成功清空线性表!";
                JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
            }else
            {
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        }
        if(e.getSource()==jb3)//向线性表中插入元素
        {

            int a1=0,a2;
            a1=Integer.parseInt(tf1.getText());
            if(a1>=0&&a1<ar.size())    //若要插入元素的位置不对,则提示插入位置错误
            {
                try{                    //若输入元素类型不对,则提示元素类型错误,插入不成功
                    a2=Integer.parseInt(tf2.getText());
                    ar.add(a1,a2);
                    dialog1.dispose();
                    message="  元素插入成功!";
                    JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
                }catch(Exception ee){
                    JOptionPane.showMessageDialog(f, "你输入的元素有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                    tf2.setText("");
                }
            }else
            {
                message="你输入的位置不合法";
                JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
                tf1.setText("");
            }


        }
        if(e.getSource()==b5)//显示线性表中的元素
        {
            if(!ar.isEmpty())//判断线性表是否为空,如果线性表为空,则提示线性表为空,若不为空,则输出线性表
            {
                TestIterator();
            }else
            {
                JOptionPane.showMessageDialog(f, "线性表为空!", "提示", JOptionPane.INFORMATION_MESSAGE);
            }
        }
        if(e.getSource()==jb1)//向线性表中加入元素,若输入的元素类型不对则提示元素类型有误
        {
            try{
                str1=tf.getText();
                int a3=Integer.parseInt(str1);
                ar.add(a3);
                tf.setText("");
            }catch(Exception ee){
                JOptionPane.showMessageDialog(f, "你输入的元素有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                tf.setText("");
            }

        }
        if(e.getSource()==jb6)//向线性表中加入元素,若输入的元素类型不对则提示元素类型有误
        {
            try{
                str1=tf.getText();
                int a3=Integer.parseInt(str1);
                ar1.add(a3);
                tf.setText("");
            }catch(Exception ee){
                JOptionPane.showMessageDialog(f, "你输入的元素有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                tf.setText("");
            }

        }
        if(e.getSource()==jb7)//建立第二个线性表,并完成两个线性表的合并和显示显示和并后的线性表
        {
            for(Object o:ar)
            {
                if(!ar1.contains(o))
                    ar1.add((Integer) o);
            }
            dialog5.dispose();
            Iterator it=ar1.iterator();
            String message;
            String title="显示线性表:";
            StringBuffer str4=new StringBuffer();
            while(it.hasNext())
            {
                str4.append(" "+it.next());
            }
            message="合并后的线性表为:"+str4;
            JOptionPane.showMessageDialog(f, message, title, JOptionPane.PLAIN_MESSAGE);
            str4.delete(0, str4.length());
            ar1.clear();
        }
        if(e.getSource()==jb2)//退出建立线性表对话框
        {
            try{


                str1=tf.getText();
                int a4=Integer.parseInt(str1);

                ar.add(a4);
                tf.setText("");
                dialog.dispose();
                message="  线性表建立成功!";
                JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
            }catch(Exception ee){

                JOptionPane.showMessageDialog(f, "你输入的元素有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                tf.setText("");
            }

        }
        if(e.getSource()==jb4)//删除线性表中的元素, 若删除元素位置错误则提示位置错误,否则提示删除元素成功

        {

            int a5=Integer.parseInt(tf3.getText());
            if(a5>=0&&a5<ar.size())
            {
                ar.remove(a5);

                dialog3.dispose();
                message="  成功删除元素!";
                JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
            }else{
                JOptionPane.showMessageDialog(f, "你输入的位置有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                tf3.setText("");
            }


        }
        if(e.getSource()==jb5)//修改线性表中的元素,若修改位置错误则提示位置错误,
        {                     //若输入修改后的元素类型不对则提示元素错误,否则提示修改成功

            int a8=0;
            int a7=Integer.parseInt(tf4.getText());
            if(a7>=0&&a7<ar.size())
            {
                try{
                    a8=Integer.parseInt(tf5.getText());
                    ar.set(a7,a8);
                    dialog4.dispose();
                    message="  成功修改元素!";
                    JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
                }catch(Exception es){JOptionPane.showMessageDialog(f, "你输入的元素有误!", "提示", JOptionPane.INFORMATION_MESSAGE);
                    tf5.setText("");
                }
            }else{
                message="你输入的位置不合法";
                JOptionPane.showMessageDialog(f, message, "提示", JOptionPane.INFORMATION_MESSAGE);
                tf4.setText("");
            }
        }


    }
    public void TestIterator() //输出线性表
    {
        Iterator it=ar.iterator();//创建迭代器对象,用于遍历线性表中的元素
        String message;
        String title="显示线性表:";
        StringBuffer str4=new StringBuffer();
        while(it.hasNext())
        {
            str4.append(" "+it.next());
        }
        message="线性表为:"+str4;
        JOptionPane.showMessageDialog(f, message, title, JOptionPane.PLAIN_MESSAGE);//把线性表中的元素显示到对话框中
        str4.delete(0, str4.length());

    }
    public void dial5()//线性表建立的对话框
    {
        dialog5=new JDialog(f,"线性表合并",true);
        Container diacp4=dialog5.getContentPane();
        diacp4.setLayout(new GridLayout(2,1));
        JPanel jp1=new JPanel(new GridLayout(3,1));
        JPanel jp2=new JPanel(new FlowLayout());
        JLabel lb1=new JLabel("请输入线性表的一个元素:");
        tf=new JTextField(5);
        tf.setEditable(true);
        jb6=new JButton("加入");
        jb7=new JButton("合并");
        jp1.add(lb1);
        jp1.add(tf);

        jp2.add(jb6);
        jb6.addActionListener(this);
        jp2.add(jb7);
        jb7.addActionListener(this);
        diacp4.add(jp1);
        diacp4.add(jp2);
        dialog5.setBounds(150, 150, 200, 180);
        dialog5.setVisible(true);
    }
    public void dial4()//修改元素的对话框
    {
        dialog4=new JDialog(f,"修改元素",true);
        Container diacp3=dialog4.getContentPane();
        diacp3.setLayout(new GridLayout(2,1));
        JPanel jp1=new JPanel(new GridLayout(4,1));
        JPanel jp2=new JPanel(new FlowLayout());
        JLabel lb1=new JLabel("要修改元素的位置为:");
        JLabel lb2=new JLabel("修改后的元素为:");
        tf4=new JTextField(5);
        tf5=new JTextField(5);
        jb5=new JButton("确定");
        jp1.add(lb1);
        jp1.add(tf4);
        jp1.add(lb2);
        jp1.add(tf5);
        jp2.add(jb5);
        jb5.addActionListener(this);
        diacp3.add(jp1);
        diacp3.add(jp2);
        dialog4.setBounds(150, 150, 200, 180);
        dialog4.setVisible(true);
    }
    public void dial3()//删除元素的对话框
    {
        dialog3=new JDialog(f,"删除元素",true);
        Container diacp2=dialog3.getContentPane();
        diacp2.setLayout(new GridLayout(2,1));
        JPanel jp1=new JPanel(new GridLayout(2,1));
        JPanel jp2=new JPanel(new FlowLayout());
        JLabel lb1=new JLabel("请输入要删除元素的位置:");
        tf3=new JTextField(5);
        jb4=new JButton("确定");
        jp1.add(lb1);
        jp1.add(tf3);
        jp2.add(jb4);
        jb4.addActionListener(this);
        diacp2.add(jp1);
        diacp2.add(jp2);
        dialog3.setBounds(150, 150, 200, 180);
        dialog3.setVisible(true);
    }
    public void dial2()//插入元素的对话框
    {
        dialog1=new JDialog(f,"插入元素",true);
        Container diacp1=dialog1.getContentPane();
        diacp1.setLayout(new GridLayout(2,1));
        JPanel jp1=new JPanel(new GridLayout(4,1));
        JPanel jp2=new JPanel(new FlowLayout());
        JLabel lb1=new JLabel("请输入插入元素的位置:");
        JLabel lb2=new JLabel("请输入要插入的元素:");
        tf1=new JTextField(5);
        tf2=new JTextField(5);
        jb3=new JButton("确定");
        jp1.add(lb1);
        jp1.add(tf1);
        jp1.add(lb2);
        jp1.add(tf2);
        jp2.add(jb3);
        jb3.addActionListener(this);
        diacp1.add(jp1);
        diacp1.add(jp2);
        dialog1.setBounds(150, 150, 200, 180);
        dialog1.setVisible(true);
    }
    public void dial1()//线性表建立的对话框
    {
        dialog=new JDialog(f,"线性表的建立",true);
        Container diacp=dialog.getContentPane();
        diacp.setLayout(new GridLayout(2,1));
        JPanel jp1=new JPanel(new GridLayout(3,1));
        JPanel jp2=new JPanel(new FlowLayout());
        JLabel lb1=new JLabel("请输入线性表的一个元素:");
        JLabel lb2=new JLabel("是否继续输入(Yes/No)?");
        tf=new JTextField(5);
        tf.setEditable(true);
        jb1=new JButton("Yes");
        jb2=new JButton("No");
        jp1.add(lb1);
        jp1.add(tf);
        jp1.add(lb2);
        jp2.add(jb1);
        jb1.addActionListener(this);
        jp2.add(jb2);
        jb2.addActionListener(this);
        diacp.add(jp1);
        diacp.add(jp2);
        dialog.setBounds(150, 150, 200, 180);
        dialog.setVisible(true);
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Serendipity_ry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值