无头单链表 java_【Java数据结构】无头结点单链表

public class NhLinkedList { private class Entry { private T value; private Entry next; public Entry(){ } public Entry(T value,Entry next){ this.value = value; this.next = next; } } private Entry first; private Entry last; private int size; public NhLinkedList(){ first = null; last = null; } // 增 //头插 public void addHead(E value){ first = new Entry<>(value,first); size++; if(last == null){ last = first; } } //尾插 public void addEnd(E value){ Entry entry = new Entry<>(value,null); size++; last.next = entry; last = entry; if(first == null){ first = last; } } //第i个地方插入 public void addIni(int i,E value){ try { Entry entryI = first; for (int p = 1; p < i - 1; p++) { entryI = entryI.next; } Entry p = new Entry<>(value, entryI.next); size++; entryI.next = p; }catch (NullPointerException e){ System.out.println(e); } } // 删 //初始化单链表 public void init(){ first = null; last = null; } //删除第i个 ,,判断第i个是否可删除 public void delI(int i){ if(i>size || i<1){ System.out.println("越界"); return; } //头删 if(i == 1){ first = first.next; size--; } //尾删 else if(i == size){ last = null; size--; } //中间删除 else { Entry entryI = first; for (int p = 1; p < i-1; p++) { entryI = entryI.next; } entryI.next = entryI.next.next; entryI.next.value = null; entryI.next.next = null; size--; } } // 改 //改第i个 public void change(E value,int i){ Entry entryI = first; for(int p = 1;p < i;p++){ entryI = entryI.next; } entryI.value = value; } // 查 //查第i个 public void searchI(int i){ try { Entry entryI = first; for (int p = 1; p < i; p++) { entryI = entryI.next; } System.out.println("第 "+i+" 个是: "+entryI.value); }catch (NullPointerException e){ System.out.println("超出查询范围"); } } //按查value public void searchV(E value){ try { Entry entryV = first; int i = 1; while (i < size) { if (entryV.value == value) { System.out.println(value+" 在第 :" + i + "个"); } entryV = entryV.next; } System.out.println("没有查到"); }catch (NullPointerException e){ System.out.println("超出查询范围"); } } //打印链表 public void show(){ for(Entry p = first ; p!=null ; p=p.next){ System.out.print(p.value); } } }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值