package com.cf.utils;
/**
* CircleLinkList.java 1.0.0 2018-07-03 14:29
* Copyright © 2014-2018,52mamahome.com.All rights reserved
* history :
* 1. 2018-07-03 14:29 @author zhoujiahao
*/
public class CircleLinkList {
static class Element {
public Object value = null;
private Element next = null;
}
//头结点
private Element head = null;
/**
* 初始化链表
*/
public void init() {
head = new Element();
head.value = null;
head.next = head;
}
/**
* 插入链表
*/
public void insertLinkList(Object o) {
if (head==null||head.next == null) {
//说明尚未初始化
init();
}
Element element = head;
while (element.next != head) {
//如果不是头
element = element.next;
}
Element addElement = new Element();
addElement.value = o;
addElement.next = head;
element.next = addElement;
}
/**
* 获得链表的长度
*/
public int getSize() {
int size=0;
if(head!=null){
Element element=head;
while (element.next!=head){
element=element.next;
size++;
}
}
return size;
}
/**
* 打印出链表
*/
public String print(){
StringBuilder stringBuilder=new StringBuilder();
Element element=head;
if(head==null){
return stringBuilder.toString();
}
while (element.next!=head){
stringBuilder.append(element.value!=null?element.value:"");
element=element.next;
}
stringBuilder.append(element.value);
return stringBuilder.toString();
}
/**
* 获得链表中最后一个符合条件的值
* 如:从5开始每遇到5或者5的倍数就将其移除,打印出最后的数字
*/
Object getSelectedValue(int selectNum){
int sum=1;
if(head==null||head.next==head){
return head!=null?head.value:"";
}
Element element=head;
while(element.next!=element){
sum++;
if(sum==selectNum){
element.next=element.next.next;
element=element.next;
sum=1;
}else {
element=element.next;
}
}
return element.value;
}
public static void main(String[] args){
CircleLinkList circleLinkList=new CircleLinkList();
Element initHead=new Element();
initHead.value="1";
initHead.next=initHead;
circleLinkList.head=initHead;
circleLinkList.insertLinkList("2");
circleLinkList.insertLinkList("3");
circleLinkList.insertLinkList("4");
circleLinkList.insertLinkList("5");
circleLinkList.insertLinkList("6");
circleLinkList.insertLinkList("7");
circleLinkList.insertLinkList("8");
circleLinkList.insertLinkList("9");
circleLinkList.insertLinkList("10");
System.out.println("-----------");
System.out.println(circleLinkList.print());
//System.out.println(circleLinkList.getSize());
System.out.println(circleLinkList.getSelectedValue(3));
System.out.println("-----------");
// System.out.println(circleLinkList.print()+"=========");
}
}
觉得文章有帮助的话就赞赏下吧!
微信:
支付宝: