java 构建循环链表_我可以使用java.util.LinkedList构建循环/循环链表吗?

我想创建一个循环/循环链表,其中列表的尾部将指向列表的头部.那么我可以使用java.util.LinkedList并在创建列表后修改尾节点以使其成为循环/循环吗?如果是这样,你能告诉我一些如何发生的代码吗?

如果我不能使用java.util.LinkedList,我应该如何创建自己的循环/循环链表实现?你能告诉我这个实现看起来如何的骨架吗?

如果您需要更多详细信息,请告诉我,我会清除任何困惑.

class ListNode {

public ListNode next;

public Object data;

public ListNode(Object data, ListNode next) {

this.next = next;

this.data = data;

}

}

class CircularLinkedList {

private ListNode head = null;

private int numberOfElements = 0;

private ListNode actualElement = null;

private int index = 0;

public boolean isEmpty() {

return (numberOfElements == 0);

}

public int getNumberOfElements() {

return numberOfElements;

}

public void insertFirst(Object data) {

if (!(isEmpty())) {

index++;

}

ListNode listNode = new ListNode(data, head);

head = listNode;

numberOfElements++;

}

public void insertAfterActual(Object data) {

ListNode listNode = new ListNode(data, actualElement.next);

actualElement.next = listNode;

numberOfElements++;

}

public boolean deleteFirst() {

if (isEmpty())

return false;

if (index > 0)

index--;

head = head.next;

numberOfElements--;

return true;

}

public boolean deleteActualElement() {

if (index > 0) {

numberOfElements--;

index--;

ListNode listNode = head;

while (listNode.next.equals(actualElement) == false)

listNode = listNode.next;

listNode.next = actualElement.next;

actualElement = listNode;

return true;

}

else {

actualElement = head.next;

index = 0;

return deleteFirst();

}

}

public boolean goToNextElement() {

if (isEmpty())

return false;

index = (index + 1) % numberOfElements;

if (index == 0)

actualElement = head;

else

actualElement = actualElement.next;

return true;

}

public Object getActualElementData() {

return actualElement.data;

}

public void setActualElementData(Object data) {

actualElement.data = data;

}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值