首页 > 代码库 > Java数据结构系类之——链表(2):单向循环链表及相关常用操作
Java数据结构系类之——链表(2):单向循环链表及相关常用操作
package LinkList.onewaycircular; public class Node { public int data; public Node next; //头结点初始化 public Node(Node next){ this.next=next; } //一般结点初始化 public Node(int data,Node next){ this.data=http://www.mamicode.com/data;>********************************我华丽的割割*******************************************************************************
package LinkList.onewaycircular; public class OnewayCircularLinkList { Node head;//头结点 Node current;//当前结点 int size;//链表大小 //初始化空链表 public OnewayCircularLinkList(){ this.head=new Node(null); this.current=this.head; size=0; this.current.next=this.head; } // 判断线性表是否为空 public boolean isEmpty(){ return size==0; } // 获取指定位置的元素,这里我们定义头结点head的index为-1 public Node getElement(int index){ if(index<-1||index>=size){ throw new RuntimeException("参数错误"); } if(index==-1){ current=head; }else{ current=head.next; } for(int i=0;i<index&¤t.next!=head;i++){ current=current.next ; } return current; } // 在指定位置插入元素,这里我们定义头结点head的index为-1 public void insert(int index , int data){ Node node=new Node(data,null); Node prev=getElement(index-1);//当前结点的前一个结点 node.next=prev.next; prev.next=node; size++; } // 删除指定位置的元素 public void delete(int index){ if(index>size-1){ throw new RuntimeException("参数错误"); } Node prev=getElement(index-1);//当前结点的前一个结点 current=prev.next; prev.next=current.next; current.next=null; size--; } //打印链表 public void traverse(){ if(isEmpty()){ System.out.println("null"); }else{ current=head.next; while(current!=head){ System.out.print(current.data+" "); current=current.next; } System.out.println(); } } }Java数据结构系类之——链表(2):单向循环链表及相关常用操作
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。