java实现简单的链表结构

首先创建简单的链表节点

public class Node {
	int data;
	Node nextNode = null;
	public Node(int data) {
		this.data = data;
	}
}

然后创建一个链表对象

public class LinkedList {
	Node headerNode = null;
	public LinkedList() {}
	
	//像链表中添加元素的方法
	public void addNode(int data) {
		Node node = new Node(data);
		//判断链表是否为空
		if(headerNode == null) {
			headerNode = node;
			return;
		}
		Node tempNode = headerNode;
		while (tempNode!=null) {
			if(tempNode.nextNode==null) {
				tempNode.nextNode = node;
				return;
			}
			tempNode = tempNode.nextNode;
			
		}
		
	}
	
	//删除指定下标的链表
	public void deleNode(int index) {
		if(index<1||index>this.length()) {
			System.out.println("参数不合法");
			return;
		}
		if(index==1) {
			headerNode=headerNode.nextNode;
			return;
		}
		int i = 2;
		Node preNode = headerNode;
		Node curNode = headerNode.nextNode;
		while(curNode!=null) {
			if(i==index) {
				preNode.nextNode = curNode.nextNode;
				return;
			}
			i++;
			preNode = curNode;
			curNode = curNode.nextNode;
		}
	}
	
	//链表排序,使用的是插入排序算法
	public void sortNode() {
		Node preNode=headerNode;
		int temp=0;
		Node curNode=null;
		while(preNode.nextNode!=null) {
			curNode=preNode.nextNode;
			while(curNode!=null) {
				if(preNode.data>curNode.data) {
					temp = curNode.data;
					curNode.data = preNode.data;
					preNode.data = temp;
				}
				curNode = curNode.nextNode;
			}
			preNode = preNode.nextNode;
		}
		
	}
	//返回链表的长度
	public int length() {
		int count = 0;
		if(headerNode==null) {
			return 0;
		}
		Node tempNode = headerNode;
		while(tempNode!= null) {
			count++;
			tempNode = tempNode.nextNode;
		}
		return count;
	}
}

链表是一种常见du的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。
ps:链表的相邻数据存储空间可能不连续。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值