[Java]单向链表实现

  • 链表是在数据结构经常见到的一种形式,Java中可以通过引用传递的方式进行实现。为了操作方便,使用内部类形式作为节点类。每个节点除了要保存自己的内容外,还要保存下一节点的引用。单向链表只能从前向后找。废话少说,上代码。
class Link{                   //链表类
class Node{                   //节点类定义为内部类
private String data;
private Node next;
public Node(String data){
this.data=data;
}

public void add(Node newNode){//add操作
if(this.next==null){
this.next=newNode;
}else{
this.next.add(newNode);
}
}
public void print(){//迭代输出(递归调用)
System.out.print(this.data+"\t");
if(this.next!=null){
this.next.print();
}
}

public boolean search(String data){//search操作
if(data.equals(this.data)){
return true;
}else {
if(this.next!=null){
return this.next.search(data);
}else{
return false;
}
}
}

public void delete(Node previous,String data){//delete操作
if(data.equals(this.data)){
previous.next=this.next;
}else{
if(this.next!=null){
this.next.delete(this,data);
}
}
}
}
private Node root;//根节点
public void  addNode(String data){//增加新节点
Node newNode=new Node(data);
if(this.root==null){
this.root=newNode;
}else{
this.root.add(newNode);
}
}

public void printNode(){//打印节点
if(this.root!=null){
this.root.print();
}
}
public boolean contains(String data){//判断元素是否存在
return this.root.search(data);
}

public void deleteNode(String data){//删除节点
if(this.contains(data)){
if(this.root.data.equals(data)){
this.root=this.root.next;
}else{
this.root.next.delete(root,data);
}
}
}
}
public class LinkDemo02{
public static void main(String args[]){
Link l=new Link();
l.addNode("A");              //增加节点A、B、C
l.addNode("B");
l.addNode("C");
System.out.println("==========删除之前===========");
l.printNode();               // 输出节点
l.deleteNode("B");           //删除B节点
System.out.println();
System.out.println("==========删除之后===========");
l.printNode();
System.out.println();
System.out.println("查询节点:"+l.contains("C"));//查询节点
}
} 

运行结果:
run
以上程序包装节点类,用户直接调用包装后的类,可方便的执行节点的增、删、查。实际使用中,Java已经为用户提供了大量的数据结构实现类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值