可视化实现单链表插入,删除,查找

时间:2022-01-28 13:15:09
可视化实现单链表插入,删除,查找 。可以使用JAVA/C++

6 个解决方案

#1


该回复于2012-02-21 10:24:44被版主删除

#2


什么意思?

#3


用界面动态显示,插入,删除查找,

#4


package lianbiao;
import javax.swing.*;
import javax.xml.soap.Node;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
public class yingyong extends JFrame implements ActionListener
{
chain nChain=new chain();
JButton jb11,jbl2,jbl3,jbl4,jbl5,jbl6;
JTextField jTextField1,jTextField2,jTextField3,jTextField4,jTextField5,jTextField6;
JButton button1,button2,button3,button4,button5,button6;
JPanel panel;
JLabel jLabel;
yingyong(){
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     //jb11=new JButton("存入的数据的个数");
     
     //jbl2=new JButton("数据");
     jbl3=new JButton("插入位置");
     jbl4=new JButton("插入数据");
     jbl4.addActionListener(this);
     jbl5=new JButton("删除数据的位置");
     jbl5.addActionListener(this);
     jbl6=new JButton("搜索数据");
     jbl6.addActionListener(this);
    // jTextField1=new JTextField();jTextField1.setColumns(10);
     //jTextField2=new JTextField();jTextField2.setColumns(10);
     jTextField3=new JTextField();jTextField3.setColumns(10);
     jTextField4=new JTextField();jTextField4.setColumns(10);
     jTextField5=new JTextField();jTextField5.setColumns(10);
     jTextField6=new JTextField();jTextField6.setColumns(10);
     jLabel=new JLabel();
     //jTextField1=new JTextField();jTextField1.setColumns(10);
     
     panel=new JPanel();
    // panel.add(jb11); panel.add(jTextField1);
     //panel.add(jbl2); panel.add(jTextField2);
     panel.add(jbl3); panel.add(jTextField3);
     panel.add(jbl4); panel.add(jTextField4);
     panel.add(jbl5); panel.add(jTextField5);
     panel.add(jbl6); panel.add(jTextField6);
    
     button1=new JButton("显示结果");button1.addActionListener(this);
     panel.add(button1);
     panel.add(jLabel);
     panel.setLayout(new GridLayout(5,2));
     
     add(panel);
     setSize(500,500);
     setVisible(true);


}


public void actionPerformed(ActionEvent e) {
if /*(e.getSource()==button1) {
String string=JOptionPane.showInputDialog("输入添加的数");
int i1=Integer.parseInt(string);
nChain.add(i1);
}
else if*/(e.getSource()==jbl4){
//node n=new node((int)Integer.parseInt(jTextField4.getText().trim()));
try{
int i2=(int)Integer.parseInt(jTextField4.getText().trim());
int j1=(int)Integer.parseInt(jTextField3.getText().trim());

nChain.add(i2,j1);
}catch(NullPointerException e1){
JOptionPane.showMessageDialog(this,"请输入正确位置");
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}

//System.out.print(nChain.toString());
jLabel.setText(nChain.toString());
}
else if (e.getSource()==jbl5){
try{
int i3=(int)Integer.parseInt(jTextField5.getText().trim());
nChain.del(i3);
}catch(NullPointerException e1){
JOptionPane.showMessageDialog(this,"请输入正确位置");
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}
jLabel.setText(nChain.toString());
}
else if(e.getSource()==jbl6){
try{
int i=(int)Integer.parseInt(jTextField6.getText().trim());
int j2=nChain.search(i); 
if(j2==-1)
JOptionPane.showMessageDialog(this,"没有找到该数据");
else 
JOptionPane.showMessageDialog(this,"该数据的位置为"+j2);
}
catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}
jLabel.setText(nChain.toString());}
}
}
package lianbiao;

import java.util.Random;

import javax.xml.crypto.Data;

public class chain {
private node first;
public chain(){
first=null;
}

//产生链表
public void duoci(int i){
Random r=new Random();
for(int n=0;n<i;n++){
int j=r.nextInt(100)+1;
this.add(j);
}
}
public void add(int data){
node n=new node(data);
node current;
if(first==null)
first=n;
else{
current=first;
while(current.next!=null)
current=current.next;
current.next=n;
}
System.out.println("插入数据"+data+" ");
}

//插入
public void add(int data,int j){
node p=new node(0);
node q=new node(data);
p=first;
for(int i=1;i<j;i++)
p=p.next;
if(j!=0){
q.next=p.next;
p.next=q;
}else {
q.next=first;
first=q;
}
}

//删除
public void del(int j){
node p=new node(0);
p=first;
if(j==0){
first=first.next;
}else{
for(int i=1;i<j;i++)
p=p.next;
p.next=p.next.next;
}
}

//搜索
public int search(int data){
int j=0;
node p=new node(0);
p=first;
while(p!=null&&p.data!=data){
p=p.next;
j++;
}
if(p==null){
return -1;
}
else {
return j;
}

}
public String toString(){
String result="";
node current=first;
while(current!=null){
result+=current.data+" ";
current=current.next;
}
return result;
}
}

#5


接着的
package lianbiao;

class node {
public int data;
public node next;
public node(int a)
{
data=a;
next=null;

}

}
 package lianbiao;

import java.util.Scanner;

import javax.swing.JOptionPane;

public class ceshi {
public static void main(String args[]){
new yingyong();
}

}

#6


 谢谢!高手!

#1


该回复于2012-02-21 10:24:44被版主删除

#2


什么意思?

#3


用界面动态显示,插入,删除查找,

#4


package lianbiao;
import javax.swing.*;
import javax.xml.soap.Node;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Scanner;
public class yingyong extends JFrame implements ActionListener
{
chain nChain=new chain();
JButton jb11,jbl2,jbl3,jbl4,jbl5,jbl6;
JTextField jTextField1,jTextField2,jTextField3,jTextField4,jTextField5,jTextField6;
JButton button1,button2,button3,button4,button5,button6;
JPanel panel;
JLabel jLabel;
yingyong(){
     setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     //jb11=new JButton("存入的数据的个数");
     
     //jbl2=new JButton("数据");
     jbl3=new JButton("插入位置");
     jbl4=new JButton("插入数据");
     jbl4.addActionListener(this);
     jbl5=new JButton("删除数据的位置");
     jbl5.addActionListener(this);
     jbl6=new JButton("搜索数据");
     jbl6.addActionListener(this);
    // jTextField1=new JTextField();jTextField1.setColumns(10);
     //jTextField2=new JTextField();jTextField2.setColumns(10);
     jTextField3=new JTextField();jTextField3.setColumns(10);
     jTextField4=new JTextField();jTextField4.setColumns(10);
     jTextField5=new JTextField();jTextField5.setColumns(10);
     jTextField6=new JTextField();jTextField6.setColumns(10);
     jLabel=new JLabel();
     //jTextField1=new JTextField();jTextField1.setColumns(10);
     
     panel=new JPanel();
    // panel.add(jb11); panel.add(jTextField1);
     //panel.add(jbl2); panel.add(jTextField2);
     panel.add(jbl3); panel.add(jTextField3);
     panel.add(jbl4); panel.add(jTextField4);
     panel.add(jbl5); panel.add(jTextField5);
     panel.add(jbl6); panel.add(jTextField6);
    
     button1=new JButton("显示结果");button1.addActionListener(this);
     panel.add(button1);
     panel.add(jLabel);
     panel.setLayout(new GridLayout(5,2));
     
     add(panel);
     setSize(500,500);
     setVisible(true);


}


public void actionPerformed(ActionEvent e) {
if /*(e.getSource()==button1) {
String string=JOptionPane.showInputDialog("输入添加的数");
int i1=Integer.parseInt(string);
nChain.add(i1);
}
else if*/(e.getSource()==jbl4){
//node n=new node((int)Integer.parseInt(jTextField4.getText().trim()));
try{
int i2=(int)Integer.parseInt(jTextField4.getText().trim());
int j1=(int)Integer.parseInt(jTextField3.getText().trim());

nChain.add(i2,j1);
}catch(NullPointerException e1){
JOptionPane.showMessageDialog(this,"请输入正确位置");
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}

//System.out.print(nChain.toString());
jLabel.setText(nChain.toString());
}
else if (e.getSource()==jbl5){
try{
int i3=(int)Integer.parseInt(jTextField5.getText().trim());
nChain.del(i3);
}catch(NullPointerException e1){
JOptionPane.showMessageDialog(this,"请输入正确位置");
}catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}
jLabel.setText(nChain.toString());
}
else if(e.getSource()==jbl6){
try{
int i=(int)Integer.parseInt(jTextField6.getText().trim());
int j2=nChain.search(i); 
if(j2==-1)
JOptionPane.showMessageDialog(this,"没有找到该数据");
else 
JOptionPane.showMessageDialog(this,"该数据的位置为"+j2);
}
catch(NumberFormatException e1){
JOptionPane.showMessageDialog(this,"请输入数字");
}
jLabel.setText(nChain.toString());}
}
}
package lianbiao;

import java.util.Random;

import javax.xml.crypto.Data;

public class chain {
private node first;
public chain(){
first=null;
}

//产生链表
public void duoci(int i){
Random r=new Random();
for(int n=0;n<i;n++){
int j=r.nextInt(100)+1;
this.add(j);
}
}
public void add(int data){
node n=new node(data);
node current;
if(first==null)
first=n;
else{
current=first;
while(current.next!=null)
current=current.next;
current.next=n;
}
System.out.println("插入数据"+data+" ");
}

//插入
public void add(int data,int j){
node p=new node(0);
node q=new node(data);
p=first;
for(int i=1;i<j;i++)
p=p.next;
if(j!=0){
q.next=p.next;
p.next=q;
}else {
q.next=first;
first=q;
}
}

//删除
public void del(int j){
node p=new node(0);
p=first;
if(j==0){
first=first.next;
}else{
for(int i=1;i<j;i++)
p=p.next;
p.next=p.next.next;
}
}

//搜索
public int search(int data){
int j=0;
node p=new node(0);
p=first;
while(p!=null&&p.data!=data){
p=p.next;
j++;
}
if(p==null){
return -1;
}
else {
return j;
}

}
public String toString(){
String result="";
node current=first;
while(current!=null){
result+=current.data+" ";
current=current.next;
}
return result;
}
}

#5


接着的
package lianbiao;

class node {
public int data;
public node next;
public node(int a)
{
data=a;
next=null;

}

}
 package lianbiao;

import java.util.Scanner;

import javax.swing.JOptionPane;

public class ceshi {
public static void main(String args[]){
new yingyong();
}

}

#6


 谢谢!高手!