欢迎您访问365答案网,请分享给你的朋友!
生活常识 学习资料

Java实现双向链表~

时间:2023-08-02

class ListNode{ public int val; public ListNode prev; public ListNode next; public ListNode(int val){ this.val=val; }}public class MylinkedList { public ListNode head; public ListNode last; //打印 public void display(){ ListNode cur=head; while(cur!=null){ System.out.print(cur.val+" "); cur=cur.next; } System.out.println(); } //得到单链表的长度 public int size(){ ListNode cur=head; int count=0; while(cur!=null){ count++; cur=cur.next; } return count; } //查找是否包含关键字key是否包含在单链表中 public boolean contains(int key){ ListNode cur=head; while(cur!=null){ if(cur.val==key){ return true; } cur=cur.next; } return false; } //头插法 public void addFirst(int data){ ListNode node=new ListNode(data); if(head==null){ head=node; last=node; }else { node.next = head; head.prev = node; head = node; } } //尾插法 public void addLast(int data){ ListNode node=new ListNode(data); if(head==null){ head=node; last=node; }else { last.next = node; node.prev = last; last = node; } } //删除第一次出现关键字为key的节点 public void remove(int key){ if(head==null){ return; } ListNode cur=head; while(cur!=null){ if(cur.val==key){ if(cur==head){ head=head.next; if(head!=null) { head.prev = null; }else{ last=null; } }else{ cur.prev.next=cur.next; if(cur==last){ last=last.prev; }else { cur.next.prev = cur.prev; } } return; }else{ cur=cur.next; } } }public void removeAllKey(int key){ if(head==null){ return; } ListNode cur=head; while(cur!=null){ if(cur.val==key){ if(cur==head){ head=head.next; if(head!=null) { head.prev = null; }else{ last=null; } }else{ cur.prev.next=cur.next; if(cur==last){ last=last.prev; }else { cur.next.prev = cur.prev; } } } cur=cur.next; }0}//在任意位置插入 第一个数据节点为0号下标 public ListNode searchIndex(int index){ ListNode cur=this.head; while(index!=0){ cur=cur.next; index--; } return cur; } public void addIndex(int index,int data){ ListNode node=new ListNode(data); if(index<0||index>size()){ System.out.println("index位置不合法"); return ; } if(index==0){ addFirst(data); return; } if(index==size()){ addLast(data); return; } ListNode cur=searchIndex(index); node.next=cur; cur.prev.next=node; node.prev=cur.prev; cur.prev=node; } public void clear(){ while(head!=null){ ListNode headNext=head.next; head.prev=null; head.next=null; head=headNext; } last=null; }}

Copyright © 2016-2020 www.365daan.com All Rights Reserved. 365答案网 版权所有 备案号:

部分内容来自互联网,版权归原作者所有,如有冒犯请联系我们,我们将在三个工作时内妥善处理。