java循环链表类_3、循环链表(java实现)
public class CircularLink{private static Node head = null;/*** 初始化*/
public voidinitCircularLink() {
head= newNode();
head.data= null;
head.next=head;
}/*** 插入節點
*
*@paramelement :節點元素值*/
public voidinsertCircularLink(T element) {
Node node= new Node(); //初始化節點
node.data =element;if (head.next ==head) {
head.next=node;
node.next=head;
}else{
Node temp=head;while (temp.next !=head) {
temp=temp.next;
}
temp.next=node;
node.next=head;
}
}/*** 值刪除
*
*@paramelement : 要刪除的值
*@return:刪除則為true 否則為假*/
public booleandeleteCircularLink(T element) {
Node temp=head;if (temp.next ==head) {
System.out.println("鏈表已空,沒有可刪除的值");return false;
}while (temp.next !=head) {if (temp.next.data ==element) {
temp.next=temp.next.next;return true;
}else{
temp=temp.next;
}
}return false;
}/*** 下標刪除
*
*@parami : 要刪除的值下標
*@return:刪除則為true 否則為假*/
public boolean deleteIndexCircularLink(inti) {
Node temp=head;int index = -1;if (temp.next ==head) {
System.out.println("鏈表已空,沒有可刪除的值");return false;
}if (i < 0 || i >=sizeCircularLink()) {
System.out.println("越界下標");return false;
}while (temp.next !=head) {
index++;if (index ==i) {
temp.next=temp.next.next;
}
temp=temp.next;
}return false;
}/*** 給定值求下標
*
*@paramelement :要找的元素*/
public voidfindCircularLink(T element) {
Node temp=head;int index = -1;if (temp.next ==head) {
System.out.println("鏈表已空,無法查找");
}while (temp.next !=head) {
temp=temp.next;
index++;if (temp.data ==element) {
temp=temp.next;
System.out.println("下標為: " +index);return;
}
}
System.out.println("你要找的值不在這里");
}/*** 下標求值
*@paramindex*/
public void findDataCircularLink(intindex) {
Node temp=head;int size= 0; //為增加下標用的
if (temp.next ==head) {
System.out.println("鏈表已空,沒有可刪除的值");return;
}if (index >= sizeCircularLink() || index < 0){
System.out.println("你的下標越界");return;
}while (temp.next !=head){
temp=temp.next;if (size ==index){
System.out.println("你要找的值為: "+temp.data);return;
}
size++;
}
System.out.println("沒有你的值");
}/*** 打印*/
public voidprintCircularLink() {
Node temp=head;
System.out.print("打印循環鏈表: ");while (temp.next !=head) {
temp=temp.next;
System.out.print(temp.data+ " ");
}
System.out.println();
}/*** 求長度
*
*@return: 返回的長度*/
public static intsizeCircularLink() {
Node temp=head;int size = 0;while (temp.next !=head) {
temp=temp.next;
size++;
}returnsize;
}public static voidmain(String[] args) {
CircularLink circularLink = newCircularLink();
circularLink.initCircularLink();
circularLink.insertCircularLink(1);
circularLink.insertCircularLink(2);
circularLink.insertCircularLink(3);
circularLink.insertCircularLink(4);
circularLink.insertCircularLink(5);
circularLink.printCircularLink();
System.out.println("長度: " +circularLink.sizeCircularLink());
System.out.println();
System.out.println("值刪除值");
circularLink.deleteCircularLink(1);
circularLink.printCircularLink();
System.out.println("長度: " +circularLink.sizeCircularLink());
System.out.println();
System.out.println("下標刪除值");
circularLink.deleteIndexCircularLink(1);
circularLink.printCircularLink();
System.out.println("長度: " +circularLink.sizeCircularLink());
System.out.println();
System.out.println("值查找下標");
circularLink.findCircularLink(5);
circularLink.printCircularLink();
System.out.println("長度: " +circularLink.sizeCircularLink());
System.out.println();
System.out.println("下標查找值");
circularLink.findDataCircularLink(3);
circularLink.printCircularLink();
System.out.println("長度: " +circularLink.sizeCircularLink());
System.out.println();
}
}
總結
以上是生活随笔為你收集整理的java循环链表类_3、循环链表(java实现)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java中多态_Java中多态的理解
- 下一篇: java接口注入空指针_spring 注