Java泛型实现单链表

class GenericLink<T>{
	public Entry head;//定义头结点
	
	class Entry{
		private T data;//数据
		private Entry next;
		
		public Entry(){//初始化结点
			data = null;
			next = null;
		}
		public Entry(T val){
			data = val;
			next = null;
		}
	}
	GenericLink(){
		this.head = new Entry();//初始化头结点
	}
	public void headpush(T data){//头插
		Entry entry = new Entry(data);
		entry.next = head.next;
		head.next = entry;
	}
	public void tailpush(T data){//尾插
		Entry entry = new Entry(data);
		Entry var = head;
		while(var.next != null){
			var = var.next;
		}
		var.next = entry;
		entry.next = null;
	}
	public int getLength(){//获取长度
		Entry var = head;
		int length = 0;
		while(var != null){
			length++;
			var = var.next;
		}
		return length;
	}
	public void pospush(int pos,T data){//指定位置插入
		if(pos < 0 || pos > getLength()){
			return;
		}
		Entry entry = new Entry(data);
		Entry var = head;
		for(int i = 0;i <= pos-1;i++){
			var = var.next;
		}
		entry.next = var.next;
		var.next = entry;
		

	}
	public void pop(T data){//删除
		Entry entry = head;//相当于一个前驱
		Entry var = entry.next;
		while(var != null){
			if(var.data == data){
				entry.next = var.next;
				break;
			}
			entry = entry.next;
			var = entry.next;
		}
	}
	
	public void show(){
		Entry tmp;
		tmp = head;
		//遍历打印链表
		while(tmp.next != null){
			System.out.println("data :"+tmp.next.data);
			tmp = tmp.next;
		}
	} 
}
public class Test8 {
	public static void main(String[] args) {
		GenericLink<Integer> l=new GenericLink<Integer>();
		l.headpush(10);
		l.headpush(34);
		l.headpush(43);
		l.tailpush(112);
		l.tailpush(768);
		l.pospush(2,23);
		l.show();
		l.pop(34);
		System.out.println(l.getLength());
	}
}

String类型的



猜你喜欢

转载自blog.csdn.net/qq_37937537/article/details/80531194