java单链表存储结构_Java实现循环链表数据存储结构 (新人求解)

今天看到这个问题,我想的头都要大了,现在我只想抱抱大腿子实现循环链表数据存储结构,如有序数据序列[2,3,4,6],在如上有序数据序列[2,3,4,6]中,插入方法是将数据插入到链表的指定位置,比如在位置2处插入元素8,就会得到数据序列[2,3,8,4,6]

链表结构中的每个节点是一个对象,每个对象有两个属性,一个属性是引用类型,用来引用下一个元素,另外一个属性是int类型,用来保存被存储的数据。head是节点类型的引用变量引用第一个存储数据的节点。

详细要求如下:

1) 定义一个名为Node的类描述链表节点对象的特征,包含两个属性一个是Node next用于引用下一个节点, 另一个是int data用于存储节点数据。 并在该类中定义带参数的构造器, 使用int data作为参数,初始化data属性,并且将next属性引用当前对象自身。

2) 在Node类中定义一个静态方法static Node insert(Node head,int index, int data),该方法用于将数据data插入到head引用的链表结构的index位置,并返回当前链表结构。方法过程分为查找对应位置节点和插入新节点两个步骤,详细描述如下:

A. 将head引用的节点作为当前节点node;

B.定义一个变量i,默认值为0,表示当前节点位置;

C.若index值为0,则说明是从链表的第一个节点位置插入新元素。执行D步骤。若不是,则执行I步骤;

D. 创建新节点newNode;

E. 插入新的节点:将newNode 的next属性引用头节点head。然后找到最后一个节点。

F. 从node节点开始查找下一个节点next;

G. 如果next节点的下一个节点是头节点head,说明该节点是链表最后一个节点,那么将该节点next属性引用newNode完成插入工作。

H.返回newNode作为该链表新的头节点。

I. 循环判断查看i+1的值是否等于index,若等于则说明找到待插入元素的上一个元素了。否则对i++然后让node的next节点作为当前节点node.直到找到该元素为止。若过程中发现node的next节点是head,则说明到达链表末尾仍没有找到对应位置,则输出下标越界并返回原头节点head。

J. 插入新的节点:将newNode的下一个节点属性next引动的节点作为node的next属性引用的节点。再将node的next属性引用newNode节点,完成插入动作。

K.返回head作为链表的头节点

3) 如果采用如下类作为测试案例:

public class T3 {

public static void main(String[] args) {

Node head = new Node(2);

head = Node.insert(head,1, 3);

head =Node.insert(head,2, 4);

head =Node.insert(head,3, 6);

head =Node.insert(head,2, 8);

Node.print(head);

}

}

可以得到如下结果:2 3 8 4 6

小白在这祝各位大腿新年快乐!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值