Java泛型应用——泛型实现单链表

泛型实现单链表:

import fanxing.GenericLink.Entry;

/*泛型实现单链表*/
class GenericLink<T> {  
    public Entry<T> head;//定义头结点  

    class Entry<T>{  
        private T data;//数据  
        private Entry<T> next;  

        public Entry(){//初始化结点  
            data = null;  
            next = null;  
        }  
        public Entry(T val){  
            data = val;  
            next = null;  
        }  
    }  
    GenericLink(){  
        this.head = new Entry<T>();//初始化头结点  
    }  
    public void inserHead(T data){  
        Entry<T> entry = new Entry<T>(data);  
        entry.next = head.next;  
        head.next = entry;  
    }  
    public void inserTail(T data){
        Entry<T> entry = new Entry<T>(data);  
        Entry<T> var = head;  
        while(var.next != null){  
            var = var.next;  
        }  
        var.next = entry;  
        entry.next = null;  
    }  
    public int getLength(){//获取长度  
        Entry<T> var = head;  
        int length = 0;  
        while(var != null){  
            length++;  
            var = var.next;  
        }  
        return length;  
    }  
    public void inserPos(int pos,T data){//指定位置插入  
        if(pos < 0 || pos > getLength()){  
            return;  
        }  
        Entry<T> entry = new Entry<T>(data);  
        Entry<T> 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<T> entry = head;
        Entry<T> 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<T> tmp;  
        tmp = head;  
        //遍历打印链表  
        while(tmp.next != null){  
            System.out.println("data :"+tmp.next.data);  
            tmp = tmp.next;  
        }  
    }   
}  
public class GenericLinkDemo {  
    public static void main(String[] args) {  
        GenericLink<Integer> l=new GenericLink<Integer>();  
        l.inserHead(11);  
        l.inserHead(17);    
        l.inserTail(9);  
        l.inserTail(18);  
        l.inserPos(3,23);  
        l.show();  
        l.pop(13);  
        System.out.println(l.getLength());  
    }  
}  

运行结果:
这里写图片描述

String类型的
这里写图片描述
运行结果:
这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值