java单链表

Java单链表实现
本文介绍了一个使用Java实现的单链表数据结构,包括增删改查、定位、排序等功能。通过具体的方法实现展示了如何操作单链表,并提供了一个简单的示例程序来演示这些功能。

java单链表中,要有增删改查、定位、排序、输出、输入、获取长度等方法。

import java.util.Scanner;

public class List {
	
	public class Node{
		public int data;
		public Node next;
		public Node(int data){
			this.data = data;
		}
	}
	
	private Node head;
	
	public Node getHead(){
		return head;
	}
	
	public int getLength()
	{
		Node node = head;
		int k = 0;
		while(node != null){
			k++;
			node = node.next;
		}
		return k;
	}
	
	public Node Locate(int index){
		if(index <= 0)return null;
		Node node = head;
		int k = 1;
		while(node != null && k < index){
			k++;
			node = node.next;
		}
		return node;
	}
	
	public void input(int n){
		if(n <= 0)return;
		Scanner reader = new Scanner(System.in);
		int value = reader.nextInt();
		
		head = new Node(value);
		Node node = head;
		int k = 1;
		while(k < n){
			k++;
			value = reader.nextInt();
			node.next = new Node(value);
			node = node.next;
		}
	}
	
	public void print(){
		Node node = head;
		while(node != null){
			System.out.print(node.data  + " ");
			node = node.next;
		}
	}
	
	public void insert(int index, Node node){
		if(index <= 0 || index > getLength())return;
		Node cur = Locate(index);
		node.next = cur.next;
		cur.next = node;
	}
	
	public void delete(int index){
		if(index <= 0 || index > getLength())return;
		Node node = Locate(index - 1);
		
		Node del = node.next;
		node.next = del.next;
	}
	
	public void setData(int index, int data){
		if(index <= 0 || index > getLength())return;
		Node node = Locate(index);
		node.data = data;
	}
	
	public int getData(int index){
		if(index <= 0 || index > getLength())return -1;
		Node node = Locate(index);
		return node.data;
	}
	
	public void sort(){
		Node cur = head;
		Node tmp = null;
		while(cur != tmp){
			while(cur.next != tmp){
				if(cur.data > cur.next.data){
					int temp = cur.data;
					cur.data = cur.next.data;
					cur.next.data = temp;
				}
				cur = cur.next;
			}
			tmp = cur;
			cur = head;
		}
	}
	
	
	public static void main(String[] args) {
		List L = new List();
		System.out.println("请输入链表中的数据");
		L.input(6);
		
		System.out.println("链表的长度为:" + L.getLength());
		System.out.println("排序后的链表为");
		L.sort();
		L.print();
		
		L.setData(4, 1000);
		System.out.println("把第4个数据修改为1000, 修改后如下");
		L.print();
		
		System.out.println("链表中第3个数据为: " + L.getData(3));
		
		L.delete(2);
		System.out.println("删除链表中的第2个数据后,结果如下");
		L.print();

	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值