java语言实现单链表
来源:互联网 发布:知乎 法国街头 编辑:程序博客网 时间:2024/06/06 12:45
public class Point {
private int x;
private int y;
public Point() {
super();
// TODO Auto-generated constructor stub
}
public Point(int x, int y) {
super();
this.x = x;
this.y = y;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
@Override
public String toString() {
return "Point [x=" + x + ", y=" + y + "]";
}
}
package com.irisian;
import java.util.Scanner;
public class MyLink {
private MyLink link; // 指向自己的引用
private Point point;
public MyLink getLink() {
return link;
}
public void setLink(MyLink link) {
this.link = link;
}
public Point getPoint() {
return point;
}
public void setPoint(Point point) {
this.point = point;
}
public MyLink() {
super();
}
public MyLink(MyLink link, Point point) {
super();
this.link = link;
this.point = point;
}
/**
* 创建链表
*
* @return
*/
MyLink createLink() {
Scanner scanner = new Scanner(System.in);
Point point2 = new Point(1, 2);
MyLink myLink2 = null;
myLink2 = new MyLink(myLink2, point2);
// do{
// System.out.println("请输入两个数字:");
// int x=scanner.nextInt();
// int y=scanner.nextInt();
// Point point3 = new Point(x, y);
// myLink2 = new MyLink(myLink2, point3);
// }while(myLink2.getPoint().getX()!=0);
while (myLink2.getPoint().getX() != 0) { // 不为0则进行循环
System.out.println("请输入两个数字:");
int x = scanner.nextInt();
int y = scanner.nextInt();
Point point3 = new Point(x, y);
myLink2 = new MyLink(myLink2, point3);
}
myLink2 = myLink2.getLink();
return myLink2;
}
/**
* 打印链表
*/
void printLink(MyLink link) {
while (link.getLink() != null) {
System.out.println(link.getPoint());
link = link.getLink();
}
}
/**
* 插入一个节点到链表中
*
* @param link
* 插入的链表的引用
*/
MyLink insertLink(MyLink link) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入两个整数:");
int x = scanner.nextInt();
int y = scanner.nextInt();
Point point2 = new Point(x, y);
link = new MyLink(link, point2);
return link;
}
/**
* 删除链表
*
* @param link
* 链表的头引用
* @return 删除之后链表的头节点的引用
*/
MyLink deleteLink(MyLink link) {
Scanner scanner = new Scanner(System.in);
System.out.println("请输入需要删除的节点号");
int i = scanner.nextInt();
// 将头节点给保存起来
MyLink linkHead = link;
// 删除第一个元素和其他的元素的方法不太一致
if (i == 1) {
link = link.getLink();
return link;
} else {
// 现在要找到第i-1个元素
for (int j = 0; j < i - 2; j++) {
// link为第i-1个元素的引用
link = link.getLink();
}
// 为第i个元素的引用
MyLink link2 = link.getLink();
// 为第i+1个元素的引用
MyLink link3 = link2.getLink();
link.setLink(link3);
}
return linkHead;
}
public static void main(String[] args) {
MyLink myLink = new MyLink();
myLink.menu(myLink);
}
void menu(MyLink myLink) {
Scanner scanner = new Scanner(System.in);
System.out.println("1.创建链表 2.为链表增加节点 3.删除链表的节点 4.打印链表");
System.out.println("请输入操作指令:");
int i = scanner.nextInt();
switch (i) {
case 1:
myLink = createLink();
System.out.println("操作成功\n");
menu(myLink);
break;
case 2:
myLink = insertLink(myLink);
System.out.println("操作成功\n");
menu(myLink);
break;
case 3:
myLink = deleteLink(myLink);
System.out.println("操作成功\n");
menu(myLink);
break;
case 4:
printLink(myLink);
System.out.println("操作成功\n");
menu(myLink);
break;
default:
System.out.println("输入的参数不合法!\n");
menu(myLink);
break;
}
}
}
- 单链表java语言实现
- java语言实现单链表
- 单链表----java语言实现
- java语言实现单链表
- 用java语言实现单链表
- JAVA语言实现机制
- java语言实现机制
- java语言实现国际化
- Java语言实现栈
- java语言实现队列
- Java语言实现二分法
- java语言实现队列
- java 语言实现随机数
- (Java)单链表Java语言顺序结构实现(数据结构三)
- (Java)单链表Java语言链式结构实现(数据结构四)
- 用java语言实现WebBrowser
- Java 跨语言实现方案
- prim算法java语言实现
- chrome表单自动填充去掉input黄色背景解决方案
- 【Scikit-Learn 中文文档】处理文本数据
- Spring源码追踪1——doGetBean(为什么org.springframework.data.redis.core.RedisTemplate的实例可以注入为ListOperations)
- C语言中的free函数
- LeetCode刷题 | 738. Monotone Increasing Digits
- java语言实现单链表
- Linux内核学习实践之红外驱动分析—RCA38KHz软解码
- 用maven命令生成项目骨架
- tcp backlog
- mysql MGR常见问题大全
- python 执行命令行命令
- 原生JS实现下拉刷新
- mysql_如果字段null,则替换
- C语言再学习之:算法入门(1)