java 泛型练习——用泛型实现单链表

用泛型实现单链表

单链表请参考我的另一篇博文:java 实现单链表、顺序表

package com.example;
/**
* 类说明  用泛型实现单链表
* 描述:TODO
* @author 佳萌
* @date 2018年5月31日
* 
*/
class Entry<T>{
		public T data;
		public Entry next;
		public Entry() {
			this.data = null;
			this.next = null;
		}
		public Entry(T data) {
			this.data = data;
			this.next = null;
		}
	}
class Link<T>{
	Entry head;
	public Link() {
		head = new Entry();
	}
	/**
	 * 头插法
	 */
	public void insertHead(T val){
		Entry entry = new Entry(val);
		entry.next = head.next;
		head.next = entry;
	}
	/**
	 * 尾插法
	 */
	public void insertTail(T val){
		Entry entry = new Entry(val);
		Entry p = head;
		while(p.next != null){
			p = p.next;
		}
		p.next = entry;
	}
	public int getLength(){
		Entry p = head;
		int len = 0;
		while(p.next != null) {
			len++;
			p = p.next;
		}
		return len;
	}
	/**
	 * 指定位置插入
	 */
	public boolean insert(T val,int pos){
		Entry p = head;
		Entry entry = new Entry(val);
		int len = 0;
		if(pos < 0 ||pos > this.getLength()){
			return false;
		}
		while(p != null){
			if(len == pos){
				entry.next = p.next;
				p.next = entry;
				return true;
			}
			len++;
			p = p.next;
		}
		return false;
	}
	/**
	 * 
	 * @param val
	 * @return
	 * 删除指定数据
	 */
	public boolean delete(T val){
		Entry p = head;
		while(p.next != null){
			if(p.next.data == val){
				p.next = p.next.next;
				return true;
			}
			p = p.next;
		}
		return false;
	}
	public void print(){
		Entry p = head.next;
		while(p != null){
			System.out.print(p.data+"   ");
			p = p.next;
		}
	}
}
public class TestDemo3 {
	public static void main(String[] args) {
		Link<Double> l2 = new Link<Double>();
		l2.insertHead(10.0);
		l2.insertHead(20.0);
		l2.insertHead(30.0);
		l2.insertTail(11.0);
		l2.insertTail(22.0);
		l2.insertTail(33.0);
		l2.insert(12.0, 3);
		l2.insert(23.0, 3);
		l2.insert(34.0, 3);
		System.out.println();
		System.out.println(l2.getLength());
		l2.delete(22.0);
		l2.print();	
	}
}

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值