Java实现单向链表

Posted 神友

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实现单向链表相关的知识,希望对你有一定的参考价值。

/*
 * 结点类
 */
public class Node {
 private int data;
 private Node next;
 
 public Node(int data) {
  this.data = data;
  this.next = null;
 }
// 设置结点 数据的方法
 public void setData(int data) {
  this.data = data;
 }
// 设置结点指针的方法
 public void setNext(Node next) {
  this.next = next;
 }
// 获取结点数据的方法
 public int getData() {
  return this.data;
 }
// 获取下一个结点的方法
 public Node getNext() {
  return this.next;
 }
}
 
/*
 * 单向链表类
 */
public class List{
 private Node head;
 public List() {
  this.head = null;
 }
// 链表尾部添加结点
 public void addNode(Node node) {
  if (head == null) {
   head = node;
  }
  else {
   Node tmp = head;
   while(tmp.getNext() != null) {
    tmp = tmp.getNext();
   }
   tmp.setNext(node);
  }
 }
// 删除结点
 public void deleteNode(Node node) {
  if (!isExist(node)) {
   System.out.println("结点不存在!");
   return ;
  }
  if (this.head.getData() == node.getData()) {
   this.head = this.head.getNext();
   return ;
  }
  Node tmp = this.head;
  while (tmp != null) {
   if (tmp.getNext().getData() == node.getData())
    break;
   tmp = tmp.getNext();
  }
  tmp.setNext(tmp.getNext().getNext());
 }
// 遍历链表
 public void traverse() {
  if (this.head == null) {
   System.out.println("链表为空");
   return ;
  }
  System.out.print("链表各结点为:");
  Node tmp = head;
  while (tmp != null) {
   System.out.print(tmp.getData() + " ");
   tmp = tmp.getNext();
  }
  System.out.println();
 }
// 判断结点是否存在
 boolean isExist(Node node) {
  Node tmp = head;
  while (tmp != null) {
   if (tmp.getData() == node.getData())
    return true;
   tmp = tmp.getNext();
  }
  return false;
 }
}
 
public class TestList {
 public static void main(String[] args) {
  // TODO Auto-generated method stub
//  实例化链表类,添加10个结点
  List list = new List();
  for (int i=0; i<10; i++) {
   list.addNode(new Node(i+1));
  }
//  遍历链表
  list.traverse();
//  删除其中一个结点
  list.deleteNode(new Node(5));
//  删除后再次遍历链表
  list.traverse();
 }
}

以上是关于Java实现单向链表的主要内容,如果未能解决你的问题,请参考以下文章

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 7 单向链表

Java 数据结构 & 算法宁可累死自己, 也要卷死别人 7 单向链表

03-java实现双向链表

LeetCode刷题总结-链表

3-1单向链表

队列(链式队列)