您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
〖第5章:面向对象基础〗_实例讲解—单向链表(2)-内部类实现一个单向链表的增删改查
发布时间:2020-12-15 14:28:24编辑:雪饮阅读()
使用内部类实现单向链表的增删改查
class Link{
private Node root;//链表的根节点
//新节点创建及挂载的选择与实现
public void addNode(String data){
Node newNode=new Node(data);
if(this.root!=null){
this.root.addNode(newNode);
}
else{
this.root=newNode;
}
}
public void delNode(String data){
if(this.root!=null){
if(this.root.data.equals(data)){
this.root=this.root.next;
}
else{
this.root.next.delNode(root,data);
}
}
else{
System.out.println("待删除节点不存在");
}
}
public void updateNode(String data,String targetData){
if(this.root!=null){
if(this.root.data.equals(data)){
this.root.data=targetData;
}
else{
this.root.next.updateNode(root,data,targetData);
}
}
else{
System.out.println("待删除节点不存在");
}
}
public void selectNote(){}
public String fetchAll(){
String str="";
if(this.root!=null){
str+=this.root.childs();
}
return str;
}
class Node{
private String data;//当前节点的内容
private Node next;//当前节点的下一个节点
//构造一个没有任何挂载的节点
public Node(String data){
this.data=data;
}
public void addNode(Node newNode){
if(this.next!=null){
this.next.addNode(newNode);
}
else{
this.next=newNode;
}
}
public String childs(){
String str=this.data+"\t";
if(this.next!=null){
str+=this.next.childs();
}
return str;
}
public void delNode(Node prev,String data){
//正好是当前节点
if(data.equals(this.data)){
prev.next=this.next;
}
else{
if(this.next!=null){
this.next.delNode(this,data);
}
}
}
public void updateNode(Node prev,String data,String targetData){
if(data.equals(this.data)){
this.data=targetData;
}
else{
if(this.next!=null){
this.next.updateNode(this,data,targetData);
}
}
}
public void selectNote(){}
}
}
public class Hello{
public static void main(String args[]){
Link link=new Link();
System.out.println("---------链表增加前----------");
System.out.println(link.fetchAll());
link.addNode("A");
link.addNode("B");
link.addNode("C");
link.addNode("D");
System.out.println("---------链表增加后----------");
System.out.println(link.fetchAll());
link.delNode("C");
System.out.println("---------删除C节点后----------");
System.out.println(link.fetchAll());
link.updateNode("D","C");
System.out.println("---------更改D节点后----------");
System.out.println(link.fetchAll());
}
}
关键字词:java,面向对象,单向链表