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

sunnyes2008 2012-02-21 10:06:16
可视化实现单链表插入,删除,查找 。可以使用JAVA/C++
...全文
227 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunnyes2008 2012-02-22
  • 打赏
  • 举报
回复
谢谢!高手!
Andy_yanhao 2012-02-22
  • 打赏
  • 举报
回复
接着的
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();
}

}
Andy_yanhao 2012-02-22
  • 打赏
  • 举报
回复
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;
}
}
sunnyes2008 2012-02-21
  • 打赏
  • 举报
回复
用界面动态显示,插入,删除查找,
安特矮油 2012-02-21
  • 打赏
  • 举报
回复
什么意思?
前端可视化软件guiplan教程,无论是懂前端还是不懂前端,都可以学会基本的布局操作。全程都是可视化教学,自动生成代码。生成之后的代码符合w3c规范,除了学会软件的使用以外,我们还能学到前端html结构搭建,拖拽调整html结构,css常用样式可视化的配置,以及交互功能vue可视化配置,简单的代码编写以及可视化数据绑定,事件绑定等。全程可视化编程,配置好之后效果立刻生效,同步更新,直接点击页面即可查看交互效果,更有利于减少研究成本与学习成本。无论是制作静态html页面,还是动态的vue项目页面。都支持可视化布局,可视化拖拽,还支持可视化交互。目前支持unipp与element-ui框架,支持可视化html元素操作,支持可视化拖拽html元素结构,支持一键添加html标签,支持一键添加uniapp组件或element-ui组件,支持可视化调整css样式,支持可视化vue数据与方法创建,支持可视化数据指令事件等一键绑定,支持实时预览实时更新,支持可视化交互测试修改之后直接点击预览页面即可测试,支持一键生成代码html,css,js图片等支持一键保存文件无论是静态html页面还是动态vue文件都能自动分类,自动存储。支持手写代码与自动生成代码混合编写开发,比如添加过滤器filters,监听器watch等。灵活便捷对程序员有好,是一款真正适合程序员开发的软件。
课程设计题目 一、必做题。 1、链表排序 任务 : (1)从文件读入30个无序整数,建立一个单链表,排序输出、再倒序输出。 (2)从文件A读入30个无序整数,建立一个递增的单链表A并输出,从文件B读入30个无序整数,建立一个递增的单链表B并输出,在A中求递增的并集。 (3)从文件读入30个学生成绩(0-100之间),建立一个双向循环链表并输出,调整链表顺序,使所有的及格成绩排在不及格成绩之前,并输出。 2、二叉树的应用 任务 :编程实现二叉树的建立,层次遍历,(递归和非递归方法)先序、中序、后序,二叉树的高度、宽度。二叉排序树的建立、插入删除; 基本要求:从文件中读入建树信息,树的节点数目不小于20个,树的高度不小于5; 3、校园局域网布线和游历问题 任务 :用无向网表示你所在学校的主要建筑平面图,图中顶点表示主要建筑,图中的边表示建筑之间的道路,存放路径长度信息。要求能够建立校园局域网,所花的代价最小;给出任意建筑之间游历的最短路径。 基本要求: (1) 原始数据存在文件中,方便读入; (2) 建筑物点不小于20个,边不小于30个; (3) 分别用广度优先和深度优先的方法遍历图,起始点定为1号教学楼; (4) 建立校园局域网,要求所花的代价最小; (5) 查询从1号教学楼到其他各点的最短路径; (6) 查询图中任意两个建筑间的最短路径。 4、Hash表应用 任务 :设计散列表实现电话号码查找系统。 基本要求: 1) 设每个记录有下列数据项:电话号码、用户名、地址; 2) 从键盘或文件输入各记录,不少于30个,以电话号码为关键字建立散列表; 3) 采用链地址的方法解决冲突; 4) 查找并显示给定电话号码的记录; 5、排序算法比较 任务 :利用随机函数产生10个样本(其中之一已为正序,之一为倒序),每个样本有20000随机整数,利用直接插入排序、希尔排序,冒泡排序、快速排序、选择排序、堆排序,归并排序(递归和非递归),基数排序八种排序方法进行排序(结果为由小到大的顺序),并统计每一种排序所耗费的平均时间 二、选做题。 1、 运动会分数统计 任务:参加运动会有n个学校,学校编号为1……n。比赛分成m个男子项目,和w个女子项目。项目编号为男子1……m,女子m+1……m+w。不同的项目取前五名或前三名积分;取前五名的积分分别为:7、5、3、2、1,前三名的积分分别为:5、3、2;哪些取前五名或前三名由学生自己设定。(m=10 , w=8 , n=15) 功能要求: 1).可以输入各个项目的前三名或前五名的成绩; 2).能统计各学校总分(用链表); 3).可以按学校编号、学校总分、男女团体总分排序输出(快速、基数); 4).可按学校编号查询学校某个项目的情况;可按项目编号查询前三或前五名的学校。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能要求。 存储结构:学生自己根据系统功能要求自己设计,但是要求运动会的相关数据要存储在数据文件中。 测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 2、 迷宫求解 任务:可以读入一个任意大小的迷宫数据,分别用广度和深度搜索的方法求出一条走出迷宫的路径,并将路径输出(最佳路径); 要求:以较为直观的方式显示结果 3、 Huffman编码 任务 :对一篇英文文章,统计各字符出现的次数,实现Huffman编码; 要求:输出每个字符出现的次数和编码,其中求最小权值要求用堆实现; 4、营业窗口队列模拟 任务:实现具有n(n=3)个窗口的现实队列模拟,统计每人的等待时间。 要求: 1). 随机产生顾客的到达时间和服务时间存盘。 2). 利用存盘数据实现队列的插入删除。 2). 当有顾客离开时,根据队列长度调整队尾。 3). 考虑顾客中途离队的情况。 4). 考虑顾客具有优先级的情况。 5、公交线路提示 任务:建立南京主要公交线路图。 要求:输入任意两站点,给出最佳的乘车线路和转车地点。 路线信息可上网查询 6、家谱管理系统 任务:实现具有下列功能的家谱管理系统 功能要求: 1). 输入文件以存放最初家谱中各成员的信息,成员的信息中均应包含以下内容:姓名、出生日期、婚否、地址、健在否、死亡日期(若其已死亡),也可附加其它信息、但不是必需的。 2). 实现数据的存盘和读盘。 3). 以图形方式显示家谱。 4). 显示第n 代所有人的信息。 5). 按照姓名查询,输出成员信息(包括其本人、父亲、孩子的信息)。 6). 按照出生日期查询成员名单。 7). 输入两人姓名,确定其关系。 8). 某成员添加孩子。 9). 删除某成员(若其还有后代,则一并删除)。 10).修改某成员信息。 11).按出生日期对家谱中所有人排序。 12).打开一家谱时,提示当天生日的健在成员。 要求:建立至少30个成员,以较为直观的方式显示结果,并提供文稿形式以便检查。 界面要求:有合理的提示,每个功能可以设立菜单,根据提示,可以完成相关的功能。 存储结构:学生自己根据系统功能要求自己设计,但是要求相关数据要存储在数据文件中。测试数据:要求使用1、全部合法数据;2、局部非法数据。进行程序测试,以保证程序的稳定。测试数据及测试结果请在上交的资料中写明; 7、算术表达式求值 任务: 一个算术表达式是由操作数(operand)、运算符(operator)和界限符(delimiter)组成的。假设操作数是正整数,运算符只含加减乘除等四种运算符,界限符有左右括号和表达式起始、结束符“#”,如:#(7+15)*(23-28/4)#。引入表达式起始、结束符是为了方便。编程利用“算符优先法”求算术表达式的值。 要求: (1) 从键盘读入一个合法的算术表达式,输出正确的结果。 (2) 显示输入序列和栈的变化过程。 8、电子小字典 任务:建立一个微型电子字典,实现生词的加入,单词的查找删除,修改等操作。 数据结构:键树 9、稀疏矩阵相乘 任务:以三元组形式存储稀疏矩阵,实现矩阵相乘 10、平衡二叉树 任务:平衡二叉树的建立、结点的插入删除。 11、B-树 任务:3阶B-树的结点的插入删除。 12、编写“连连看”程序。 13、……(自选合适的题目) 成绩评定细则:(优、良、中、及格、不及格五等级) 1. 正确性:程序是否可以运行,结果是否正确(20%) 2. 功能的完备性:是否实现要求的所有子功能(20%) 3. 课程设计报告中的算法说明,课程设计报告中总结(20%) 4. 独立完成情况( 40%) 加分项目: 1.工作量和选题难度 2.可读性:代码编写是否规范,是否便于阅读。如函数、变量命名,‘{ }’的缩进,关键位置适量注释等 3.功能的完善:除要求实现的功能外,完成了其它的功能,实现了功能的完善 4.健壮性:异常处理的情况 5.界面的设计:可视化界面,或者交互良好的DOS界面 6. ……(自荐加分项目) 代码量要求:>=2500行。 代码总量 = 课设题目1 代码量 + 课设题目2 代码量…… 若代码总量低于2500行,则成绩按比例打折。 编程语言:C或C++语言 编程环境:Microsoft Visual C++ 6.0 检查方式:一对一上机检查 总体上检查程序的代码量,正确性,可读性,健壮性,功能的完备性,程序的结构是否合理;根据实际情况进行详细的程序代码检查。 时间安排: 1 上机时间安排 2课程设计检查时间 3 课程设计报告上交时间 课程设计报告要求: 1.课程设计报告封面:包括课题名称、班级、学号、学生姓名、成绩和指导教师; 2.课程设计报告目录:每部分内容所在页码; 3.需求分析:给出每道题的需求; 4.概要设计:给出每道题采用的数据结构,算法设计思想,算法的时间复杂度; 5.详细设计:给出每道题的源程序,并在必要的代码处给出注释; 6.功能测试:给出每道题的测试数据和结果; 7.完成情况:每道题完成部分和未完成部分,自己最满意的部分; 8.代码量:每道题代码的行数和总行数; 9.心得体会:包括课程设计设中遇到的问题,如何解决,编程的体验,感想和建议; 10.课程设计报告的电子文档在检查后一周内上交班长。
【内容简介】 本书可帮助读者: 通过由基于JAVA的演示所组成的可视专题讨论来掌握数据结构和算法 学会如何为常见和不太常见的编程条件选择正确的算法 利用数据结构和算法为现实世界的处理过程建模 了解不同的数据结构的优势和弱点,考虑如何利用它们改进编程的效率 学会如何用面向对象的编程简化数据结构和算法 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。 不管使用何种语言或平台,掌握了数据结构和算法将改进程序的质量和性能。 书中提供了一套独创的可视讨论专题用以阐明主要的论题;它使用JAVA语言说明重要的概念,而避免了C/C++语言的复杂性,以便集中精力论述数据结构和算法。 经验丰富的作者Robert Lafore先生提供了许多简单明了的例子,避免了对于这类命题常见的冗长、繁琐的数学证明。在第二版中,他利用Java语言最新特性,修改并扩充了他的例子。在每一章后都有问题和练习,使读者有机会测试自己的理解程序。 【原 书 名】 Data Structures & Algorithms in Java 【原出版社】 SAMS 【作  者】[美]Robert Lafore [同作者作品] [作译者介绍] 【译  者】 计晓云[同译者作品] 赵研 曾希 狄小菡 【丛 书 名】 国外经典计算机科学教材 【出 版 社】 中国电力出版社  【书 号】 7508319117 【出版日期】 2004年2月 【开 本】 16开 【页 码】 560 【版 次】2-1 本书以一种易懂的方式教授如何安排和操纵数据的问题,其中不乏一些难题;了解这些知识以期使计算机的应用获得最好的表现。不管使用何种语言或平台,掌握了数据结构和算法将改进程序的质量和性能。 书中提供了一套独创的可视讨论专题用以阐明主要的论题;它使用Java语言说明重要的概念,而避免C/C++语言的复杂性,以便集中精力论述数据结构和算法。 经验丰富的作者Robert Lafore先生提供了许多简单明了的例子,避免了对于这类命题常见的冗长、繁琐的数学证明。在第二版中,他利用Java语言最新特性,修改并扩充了他的例子。在每一章后都有问题和练习,使读者有机会测试自己的理解程序。 出版说明 献词 简介 第1章 综述 数据结构和算法能起到什么作用? 数据结构的概述 算法的概述 一些定义 面向对象编程 软件工程 对于C++程序员的Java Java数据结构的类库 小结 问题 第2章 数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 编程作业 第3章 简单排序 如何排序? 冒泡排序 选择排序 插入排序 对象排序 几种简单排序之间的比较 小结 问题 实验 编程作业 第4章 栈和队列 不同的结构类型 栈 队列 优先级队列 解析算术表达式 小结 问题 实验 编程作业 第5章 链表 链结点(Link) LinkList专题Applet 单链表 查找删除指定链结点 双端链表 链表的效率 抽象数据类型 有序链表 双向链表 迭代器 小结 问题 实验 编程作业 第6章 递归 三角数字 阶乘 变位字 递归的二分查找 汉诺(Hanoi)塔问题 归并排序 清除递归 一些有趣的递归应用 小结 问题 实验 编程作业 第7章 高级排序 希尔排序 划分 快速排序 基数排序 小结 问题 实验 编程作业 第8章 二叉树 为什么使用二叉树? 树的术语 一个类比 二叉搜索树如何工作 查找节点 插入一个节点 遍历树 查找最大值和最小值 删除节点 二叉树的效率 用数组表示树 重复关键字 完整的tree.java程序 哈夫曼(Huffman)编码 小结 问题 实验 编程作业 第9章 红-黑树 本章讨论的方法 平衡树和非平衡树 使用RBTree专题applet 用专题applet做试验 旋转 插入一个新节点 删除 红-黑树的效率 红-黑树的实现 其他平衡树 小结 问题 实验 第10章 2-3-4树和外部存储 2-3-4树的介绍 Tree234专题applet 2-3-4树的Java代码 2-3-4树和红-黑树 2-3-4树的效率 2-3树 外部存储 小结 问题 实验 编程作业 第11章 哈希表 哈希化简介 开放地址法 链地址法 哈希函数 哈希化的效率 哈希化和外部存储 小结 问题 实验 编程作业 第12章 堆 堆的介绍 Heap专题applet 堆的Java代码 基于树的堆 堆排序 小结 问题 实验 编程作业 第13章 图 图简介 搜索 最小生成树 有向图的拓扑排序 有向图的连通性 小结 问题 实验 编程作业 第14章 带权图 带权图的最小生成树 最短路径问题 每一对顶点之间的最短路径问题 效率 难题 小结 问题 实验 编程作业 第15章 应用场合 通过数据结构 专用数据结构 排序 图 外部存储 前进 附录A 运行专题applet和示例程序 专题applet 示例程序 Sun Microsystem软件开发工具集 重名的类文件 其他开发系统 附录B 进一步学习 数据结构和算法 面向对象程序语言 面向对象设计(OOD)和软件工程 附录C 问题答案 第1章,综述 第2章,数组 第3章,简单排序 第4章,栈与队列 第5章,链表 第6章,递归 第7章,高级排序 第8章,二叉树 第9章,红-黑树 第10章,2-3-4树和外部存储 第11章,哈希表 第12章,堆 第13章,图 第14章,带权图

50,527

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧