• 数据结构实验一:单链表就地翻转


    核心代码:

        public static void List_Inverse(ListNode h) {
            ListNode p = h.getNext(), q;
            while (p.next != null) {
                q = p.next;
                p.next = q.next;
                q.next = h.next;
                h.next = q;
            }
        }

    然后可能前几天比较空,做了个可视化界面(普普通通,没什么特色):

     附个代码,造福后来人

    package list_inverse.java;
    
    import java.awt.BorderLayout;
    import java.awt.EventQueue;
    
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import javax.swing.border.EmptyBorder;
    import javax.swing.JLabel;
    import java.awt.Font;
    import javax.swing.JTextField;
    import javax.swing.JScrollPane;
    import javax.swing.JButton;
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableModel;
    import java.awt.event.ActionListener;
    import java.awt.event.ActionEvent;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    
    public class View extends JFrame {
    
        public static class ListNode {
            String value;
            ListNode next;
    
            public String getValue() {
                return value;
            }
    
            public void setValue(String value) {
                this.value = value;
            }
    
            public ListNode getNext() {
                return next;
            }
    
            public void setNext(ListNode next) {
                this.next = next;
            }
    
            ListNode(String x) {
                value = x;
                next = null;
            }
        }
    
        private JPanel contentPane;
        private JTextField tf_inpute;
        private JTable table;
        private JButton btnNewButton_1;
    
        static int row;
        static String val;
        static ListNode head = new ListNode("");
        ListNode p = head;
    
        /**
         * Launch the application.
         */
        public static void main(String[] args) {
    
            EventQueue.invokeLater(new Runnable() {
                public void run() {
                    try {
                        View frame = new View();
                        frame.setVisible(true);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            });
        }
    
        /**
         * Create the frame.
         */
        public View() {
            setTitle("单链表就地反转");
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
            setBounds(100, 100, 700, 600);
            this.setLocationRelativeTo(null);// 居中
            contentPane = new JPanel();
            contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
            setContentPane(contentPane);
            contentPane.setLayout(null);
    
            JLabel lblNewLabel = new JLabel("输入结点元素:");
            lblNewLabel.setFont(new Font("楷体", Font.PLAIN, 20));
            lblNewLabel.setBounds(82, 47, 170, 38);
            contentPane.add(lblNewLabel);
    
            tf_inpute = new JTextField();
            tf_inpute.setBounds(239, 50, 178, 38);
            contentPane.add(tf_inpute);
            tf_inpute.setColumns(10);
    
            JScrollPane scrollPane = new JScrollPane();
            scrollPane.setBounds(82, 110, 467, 339);
            contentPane.add(scrollPane);
    
            table = new JTable();
            table.addMouseListener(new MouseAdapter() {
                @Override
                public void mouseClicked(MouseEvent e) {
                    row = table.getSelectedRow();
                    val = table.getValueAt(row, 0).toString();
                }
            });
            table.setModel(new DefaultTableModel(new Object[][] {}, new String[] { "u7ED3u70B9u6570u503C" }));
            scrollPane.setViewportView(table);
    
            JButton btnNewButton = new JButton("reverse");
            btnNewButton.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    List_Inverse(head);
                    fillTable();
                }
            });
            btnNewButton.setFont(new Font("楷体", Font.PLAIN, 20));
            btnNewButton.setBounds(407, 478, 141, 44);
            contentPane.add(btnNewButton);
    
            btnNewButton_1 = new JButton("提交");
            btnNewButton_1.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    p = head;
                    while (p.getNext() != null) {
                        p = p.getNext();
                    }
                    String node = tf_inpute.getText();
                    p.next = new ListNode(node);
                    p = p.next;
                    fillTable();
                    tf_inpute.setText("");
                }
            });
            btnNewButton_1.setFont(new Font("楷体", Font.PLAIN, 20));
            btnNewButton_1.setBounds(449, 50, 100, 33);
            contentPane.add(btnNewButton_1);
    
            JButton btnNewButton_2 = new JButton("删除");
            btnNewButton_2.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    p = head;
                    while (p.getNext() != null && !p.getNext().getValue().equals(val)) {
                        p = p.getNext();
                    }
                    p.setNext(p.getNext().getNext());
                    fillTable();
                }
            });
            btnNewButton_2.setFont(new Font("楷体", Font.PLAIN, 20));
            btnNewButton_2.setBounds(105, 481, 107, 38);
            contentPane.add(btnNewButton_2);
    
            JButton btnNewButton_3 = new JButton("清空");
            btnNewButton_3.addActionListener(new ActionListener() {
                public void actionPerformed(ActionEvent arg0) {
                    p = head.getNext();
                    head.setNext(null);
                    while (p != null) {
                        ListNode q = p;
                        p = p.getNext();
                        q = null;
                    }
                    fillTable();
                }
            });
            btnNewButton_3.setFont(new Font("楷体", Font.PLAIN, 20));
            btnNewButton_3.setBounds(260, 484, 100, 33);
            contentPane.add(btnNewButton_3);
        }
    
        public void fillTable() {
            DefaultTableModel defaultTable = (DefaultTableModel) table.getModel();
            defaultTable.setRowCount(0);
            p = head.getNext();
            while (p != null) {
                defaultTable.addRow(new Object[] { p.getValue() });
                p = p.getNext();
            }
        }
    
        public static void List_Inverse(ListNode h) {
            ListNode p = h.getNext(), q;
            while (p.next != null) {
                q = p.next;
                p.next = q.next;
                q.next = h.next;
                h.next = q;
            }
        }
    }
    转载请注明出处:https://www.cnblogs.com/stu-jyj3621
  • 相关阅读:
    Docker生态会重蹈Hadoop的覆辙吗?
    刘志强博士:专业涵养 奉献情怀
    Sublime Text3前端必备插件
    JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof使用详解
    jvm的stack和heap,JVM内存模型,垃圾回收策略,分代收集,增量收集(转)
    Eclipse安装MAT插件
    tomcat内存泄漏存入dump文件
    CSS中behavior属性语法简介
    get/post时中文乱码问题的解决办法
    Java序列化的机制和原理
  • 原文地址:https://www.cnblogs.com/stu-jyj3621/p/13972435.html
Copyright © 2020-2023  润新知