数据结构链表的基本操作
发布时间:2023-07-10 21:31:49
来源:博客园
(资料图片)
/*数据结构单向链表基本操作节点类 */import java.util.Iterator;import java.util.function.Consumer;public class shujujiegou implements Iterable {//整体 private Node head;//头指针 @Override public Iterator iterator() { //匿名内部类->带名字的内部类 return new NodeIterator(); } private class NodeIterator implements Iterator { Node p=head; @Override public boolean hasNext() {//是否有下一个元素 return p!=null;//不空返回真 } @Override public Integer next() {//返回当前值,并指向下一个元素 int v=p.value; p=p.next; return v; } } private static class Node { int value;//值 Node next;//下一个节点指针 public Node(int value, Node next) { this.value = value; this.next = next; } } public void addFirst(int value) { //1.链表为空 // head=new Node(value,null); //2.链表非空(头插) head = new Node(value, head); }//遍历链表 //Params:consumer-要执行的操作 public void loop(Consumer consumer) { Node p = head; while (p != null) { consumer.accept(p.value); p = p.next; } }//遍历链表2 //Params:consumer-要执行的操作 public void loop2(Consumer consumer) { for (Node p = head; p != null; p = p.next){ consumer.accept(p.value); } } private Node findLast(){ if(head==null){ return null; } Node p; for(p=head;p.next!=null;p=p.next){ } return p; } public void addLast(int value){ Node last=findLast(); if(last==null){ addFirst(value); return; } last.next=new Node(value,null); } /* public void test(){ int i=0; for(Node p=head;p!=null;p=p.next,i++){ System.out.println(p.value+"索引是:"+i); } 根据索引查找Params:index-索引Returns:找到,返回该索引位置节点的值Throws:IlLegalArgumentException-找不到,抛出index非法异常 }*/ private Node findNode(int index){//给定索引位置 int i=0; for(Node p=head;p!=null;p=p.next,i++){ if(i==index){ return p; } } return null;//没找到 } public int get(int index) throws IllegalAccessException { Node node=findNode(index); if(node==null){ //抛异常 illegalIndex(index); } return node.value; } //异常处理(重点) private static void illegalIndex(int index) throws IllegalAccessException { throw new IllegalAccessException( String.format("index[%d] 不合法%n", index) ); } /*向索引位置插入 */ public void insert(int index,int value) throws IllegalAccessException { if(index==0){ addFirst(value); return; } Node prev=findNode(index-1);//找到上一个节点 if(prev==null){ illegalIndex(index); } prev.next=new Node(value,prev.next); }//1.问题 //删除头节点 public void removeFirst() throws IllegalAccessException { if(head==null) { illegalIndex(0); } head=head.next; } public void remove(int index) throws IllegalAccessException { if(index==0){ removeFirst(); return; } Node prev=findNode(index-1);//上一个节点 if(prev==null){ illegalIndex(index); } Node removed=prev.next;//被删除的节点 if(removed==null){ illegalIndex(index); } prev.next=removed.next; }}
标签:
AD
更多相关文章
- 数据结构链表的基本操作
- 谷实生物拟对全资子公司唐山谷实增
- 爨怎么读音是什么意思 爨怎么读
- 货车发生故障不求救,龟速行驶遭处
- 一汽解放预计:上半年净利润同比增
- 保康警方持续发力,三天抓获违法犯
- 2023进度条过半,“衣食住行”的变
- 江苏一摊主因拒交费5元被清洁工泼粪
- 美国将向乌克兰提供集束炸弹 中国
- 海报|打卡郑汴洛,畅意吃住玩
- 首都航空服务_首都航空服务
- 剁椒鱼头 850 ……这 TM 是啥鱼头啊?
- 成都温江区手机支付门诊费用指南(对
- 乘联会:6月新能源乘用车零售66.5万
- 乌镇景区回应“婴儿坐游船需买票”
- 颠覆性技术!中科院宣布 无创测血
- 再现亲密关系中的迷雾骗局,舞台剧
- 保靖县农业农村局:全力做好灾后农
- 你的假期旅游必备 美地谷清口片解
- 驾校报名费没考科一可以退款吗_驾校
- 恒华科技:截至本公告日 江春华累
- 四川:7月至12月集中开展高校毕业生
- “马大哈”驾驶员赶路心切,小轿车
- 油价有望延续反弹!OPEC正在减产,
- 厦门大学嘉庚学院召开主题教育调研
- 铜冠铜箔(301217.SZ):3.5um铜箔目
- 金地东南2023产品发布盛典圆满落幕
- “积”出美德信用新风尚
- 黄山毛峰制作
- “积”出美德信用新风尚