java构建排序双链表,《Java数据结构》Java链表结构(单向链表,双向链表)

单向链表(单链表)是链表的一种,其特点是链表的链接方向是单向的,对链表的访问要通过顺序读取从头部开始;链表是使用指针进行构造的列表;又称为结点列表,因为链表是由一个个结点组装起来的;其中每个结点都有指针成员变量指向列表中的下一个结点;

50ad7efea08a873c6c4d8dd121370b6b.png

单向链表:

/**

* 单向链表

*/

public class ListNode {

Integer val;

ListNode next; //下一个节点

public ListNode(Integer x) { val = x; }

}

/**

* 创建一个单向链表结构

* 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9

*/

public class ListDemo {

public static void main(String[] args) {

//创建链表

ListNode listNodeTmp = new ListNode(-1);

ListNode listNodeStart = listNodeTmp;

for (int i = 1; i < 10; i++) {

ListNode listNode = new ListNode(i);

listNodeTmp.next = listNode;

listNodeTmp = listNode;

}

//打印链表

ListNode listNodeQuery = listNodeStart.next; //listNodeQuery相当于指针,指向哪个节点

StringBuilder stringBuilder = null;

while(listNodeQuery !=null){ //指向位置是否为空

if(stringBuilder == null){

stringBuilder = new StringBuilder();

stringBuilder.append(listNodeQuery.val);

}else{

stringBuilder.append(" -> "+ listNodeQuery.val);

}

listNodeQuery = listNodeQuery.next; // 指向下一个节点

}

System.out.println(stringBuilder.toString());

}

}

运行结果:

1f57e9fc8c9cd25bbf70dba7d7d8efc2.png

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。

86f2c732909a46163cd2d90ee40d34ec.png

双向链表:

public class DoubleListNode {

Integer val;

DoubleListNode next; //下一个节点

DoubleListNode pro; //上一个节点

public DoubleListNode(Integer x) { val = x; }

}

/**

* 创建一个双向向链表结构(1 指向 2 的同时2 也指向 1)

* 1 2 3 4 5 6

*/

public class DoubleListDemo {

public static void main(String[] args) {

//创建链表

DoubleListNode doubleListNodeTmp = new DoubleListNode(-1);

DoubleListNode doubleListNodeStart = doubleListNodeTmp;

for (int i = 1; i < 10; i++) {

DoubleListNode doubleListNode = new DoubleListNode(i);

doubleListNodeTmp.next = doubleListNode;

doubleListNode.pro = doubleListNodeTmp;

doubleListNodeTmp = doubleListNode;

}

DoubleListNode doubleListNodeQuery = doubleListNodeStart.next.next.next; //指向3的位置

//获取自身

System.out.println("节点自身:"+doubleListNodeQuery.val);

//获取上一个节点.

System.out.println("上一个节点:"+doubleListNodeQuery.pro.val);

//获取下一个节点.

System.out.println("下一个节点:"+doubleListNodeQuery.next.val);

}

}

运行结果:

cbbff282385fbc03dcbf4f72dbee10c5.png

https://www.cnblogs.com/jssj/tag/java/default.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值