java实现链表,以及链表的基本功能,增,删,toString等功能

package com.duixiang;
/*
 * 1.没有写输入合法验证
 * 2.代码逻辑比较简单
 */

public class LinkedList<E> {				//泛型
	
	private class Node{                      //我用的是内部类,用户不需要知道内部如何实现,所直接用内部类封装
		public E e;								
		public Node next;
		public Node(E e,Node next) {
			
			this.e = e;
			this.next = next;
		}
		public Node(E e) {
			this(e, null);
		}
		public Node() {
			this(null,null);
		}
		@Override
		public String toString() {
			return e.toString();
		}
	
			
		}
	private Node head;            //设置链表头,初始化为空
	int size;					// 当前链表实际长度
	
	public LinkedList() {
		head = null;
		size =  0;
		}
	public int getSize() {           //得到链表当前长度
		return size;
 	}
	
	
	public void addFirst(E e) {        //在链表头添加元素
		Node node = new Node(e);
		node.next = head;
		head = node;
		size ++;
	}
	
	public void add(int index, E e) {     //在链表某一个索引添加元素
		Node preNode = new Node();
		preNode = head;
		Node node = new Node(e);
		
		if (index > 0 && index < size) {
			for (int i = 1; i <size; i++) {
				if (i == index) {
					node.next = preNode.next;
					preNode.next = node;
					size++;
					break;
				}else {
					preNode = preNode.next;
				}
				
			}
		}else if (index == 1) {
			addFirst(e);
		}else {
			System.out.println("您的输入有误!");
		}
	}
	
	
	public void addLast(E e) {
		add(size, e);
	}
	
	
	public void delete(int index) {
		Node nowNode = new Node();		//当前节点,用来遍历到要删除的节点
		Node delNode = new Node();     //要删除的节点
		nowNode = head;
		
		
		for (int i = 0; i < index - 1; i++) {
			nowNode= nowNode.next;
		}
		delNode = nowNode.next;
		nowNode.next = delNode.next;
		size--;
		
	}
	public boolean isEmpty() {
		return size==0;
	}
	
	public E find(int index) {
		Node nowNode = new Node();
		nowNode = head;
		for (int i = 0; i <index; i++) {
			nowNode = nowNode.next;
		}
		return nowNode.e;
	}
	
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		StringBuffer stringBuffer = new StringBuffer();
		Node nowNode = new Node();
		nowNode = head;
		stringBuffer.append("[");
		
		for (int i = 0; i < size; i++) {
			if (nowNode.next != null) {
				stringBuffer.append(nowNode.e+",");
				nowNode = nowNode.next;
			}else {
				stringBuffer.append(nowNode.e);
			}
			
		}
		stringBuffer.append("]");
		
		
		return stringBuffer.toString();          
		
	}
	
	

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值