一、
class Link{
class Node{
private String data;//数据内容
private Node next;
public Node(String data){
this.data=data;
}
public void add(Node newNode){
if(this.next==null){
this.next=newNode;
}else{
this.next.add(newNode);
}
}
public void printData(){
System.out.print(this.data+" ");
if(this.next!=null){
this.next.printData();
}
}
public boolean search(String name){//节点查找
if(this.data.equals(name)){
return true;
}else{
if(this.next!=null){
return this.next.search(name);
}else{
return false;
}
}
}
public void delete(Node previous,String data){
if(data.equals(this.data)){
previous.next=this.next;//this就是代表this.root.next,也就是previous.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.printData();
}
}
public boolean contains(String name){//查找节点
return this.root.search(name);
}
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 LinkDemo {
public static void main(String[] args){
Link l=new Link();
//节点添加
l.addNode("A");
l.addNode("B");
l.addNode("C");
l.addNode("D");
l.addNode("E");
l.printNode();
System.out.println();
//节点查找,查找成功则返回true
System.out.println(l.contains("D"));
//节点删除
l.deleteNode("E");
l.printNode();
}
}
二、
public class Node {
//数据域
public long data;
//指针域
public Node next;
public Node(long value){
this.data=value;
}
/*
* 显示方法
* */
public void display(){
System.out.print(data+" ");
}
}
public class LinkList {
//头结点
private Node first;
public LinkList(){
first=null;
}
/*
* 插入一个节点,在头结点后进行插入
* */
public void insertFirst(long value){
Node node=new Node(value);
node.next=first;
first=node;
}
/*
* 删除一个节点,在头结点后进行删除
* */
public Node deleteFirst(){
Node tmp=first;
first=tmp.next;
return tmp;
}
/*
* 显示方法
* */
public void display(){
Node current=first;
while(current!=null){
current.display();
current=current.next;
}
System.out.println();
}
/*
* 查找方法
* */
public Node find(long value){
Node current=first;
while(current.data!=value){
if(current.next==null){
return null;
}
current=current.next;
}
return current;
}
/*
* 删除方法,根据数据域来进行删除
* */
public Node delete(long value){
Node current=first;
Node previous=first;
while(current.data!=value){
if(current.next==null){
return null;
}
previous=current;
current=current.next;
}
if(current==first){//如果是第一个节点
first=first.next;
}else{
previous.next=current.next;
}
return current;
}
}
public class TestLinkList {
public static void main(String[] args){
LinkList ll=new LinkList();
ll.insertFirst(34);
ll.insertFirst(23);
ll.insertFirst(12);
ll.insertFirst(0);
ll.insertFirst(-1);
//显示
ll.display();
//删除First节点
ll.deleteFirst();
ll.display();
//查找方法
Node node=ll.find(23);
node.display();
System.out.println();
//删除数据
Node nodel=ll.delete(0);
nodel.display();
System.out.println();
ll.display();
}
}