手把手教你用java语言实现数据结构(二)-----------单向链表

346 阅读2分钟

一张图带你了解单向链表内部结构:

单向链表的指向:

1、定义链表属性、构造方法

//节点内容
	int data;
	//下一个节点
	Node next;
	public Node(int data) {
		this.data = data;
	}

2、添加元素(末尾添加节点对象)

//为链表追加节点
	public Node addNode(Node node) {
		//获取当前节点
		Node currentNode = this;
		//往后找
		while(true) {
			//获取当前节点的下一个节点
			Node nextNode = currentNode.next;
			//判断是否为最后一个节点
			if(nextNode == null) {
				break;
			}
			//将下一个节点赋值给当前节点
			currentNode = nextNode;
		}
		//把需要追加的节点元素追加到当前节点的下一个next
		currentNode.next = node;
		//返回自己,可以一直追加节点
		return this;
	}

3、插入元素(指定位置处添加节点)

//指定位置处插入节点
	public void insertNode(Node node) {
		//取出下一个节点,作为下下一个节点
		Node nextnext = this.next;
		//让要插入的节点为当前节点的next
		this.next = node;
		//让下下一个节点为插入节点的next
		node.next = nextnext;
	}

4、删除节点

//删除节点操作
	public void delNode() {
		//获取下下一个节点
		 Node newNode = this.next.next;
		//将下下一个节点设置为当前节点的下一个节点
		 this.next = newNode;
	}

5、获取节点

    //获取下一个节点
	public Node next() {
		return this.next;
	}

6、获取节点元素

	//获取节点的数据
	public int getData() {
		return this.data;
	}

7、判空方法

	//判断节点是否为空
	public boolean isEmpty() {
		return next == null;
	}

完整代码:

package com.yueqian.shujujiegou;
/**
 * 数据结构------单向链表
 * @author LinChi
 *
 */
public class Node {
	//节点内容
	int data;
	//下一个节点
	Node next;
	public Node(int data) {
		this.data = data;
	}
	//为链表追加节点
	public Node addNode(Node node) {
		//获取当前节点
		Node currentNode = this;
		//往后找
		while(true) {
			//获取当前节点的下一个节点
			Node nextNode = currentNode.next;
			//判断是否为最后一个节点
			if(nextNode == null) {
				break;
			}
			//将下一个节点赋值给当前节点
			currentNode = nextNode;
		}
		//把需要追加的节点元素追加到当前节点的下一个next
		currentNode.next = node;
		//返回自己,可以一直追加节点
		return this;
	}
	//显示所有节点
	public void show() {
		//获取当前节点
		Node currentNode = this;
		while(true) {
			//打印当前节点
			System.out.print(currentNode.getData()+" ");
			//将当前节点的下一个节点赋值给当前节点
			currentNode = currentNode.next;
			//如果是最后一个节点
			if(currentNode == null) {
				break;
			}
		}
		//整体结束换行
		System.out.println();
	}
	//删除节点操作
	public void delNode() {
		//获取下下一个节点
		 Node newNode = this.next.next;
		//将下下一个节点设置为当前节点的下一个节点
		 this.next = newNode;
	}
	//指定位置处插入节点
	public void insertNode(Node node) {
		//取出下一个节点,作为下下一个节点
		Node nextnext = this.next;
		//让要插入的节点为当前节点的next
		this.next = node;
		//让下下一个节点为插入节点的next
		node.next = nextnext;
	}
	//获取下一个节点
	public Node next() {
		return this.next;
	}
	//获取节点的数据
	public int getData() {
		return this.data;
	}
	//判断节点是否为空
	public boolean isEmpty() {
		return next == null;
	}
	
}

对动态数组感兴趣的朋友可以我的上一篇博客:

记得点赞关注👉:手把手教你用java实现数据结构(-)------动态数组: