- 博客(9)
- 收藏
- 关注
原创 单向环形链表解决约瑟夫问题
一.约瑟夫问题 从n个围城圈的同学中,第k个同学开始,数m个数,然后将该同学移除,接着从下一个同学开始数m个数,再移除,依次类推,比如5个同学,从第1个同学开始数,数2个数,那么移除的顺序为 2->4->1->5->3 二.构造单向环形链表 public void addNums(int num) { if (num < 1) { System.out.println("传入的num数量不符合要求");
2022-01-17 21:26:33
292
原创 手写双向链表
一.实现思路 (1) 添加功能 1) 添加到末尾 cur.next = newNode newNode.pre = cur 2) 添加到中间 cur.pre.next = node node.pre = cur.pre node.next = cur cur.pre =...
2022-01-15 21:22:20
407
原创 合并两个有序的单向链表
一.实现思路 1.准备一个新的头节点,还有它的当前指正newCur 2.两条链表都准备一个指针cur,指向当前位置 3.两个cur作对比,id值小的用一个节点next保存下一个节点,防止节点断开,然后将当前节点连接到新的链表 4.如果一条节点已经遍历完了,newCur.next = 另一条链表的cur节点就可以了 二.代码实现 //合并两个有序的单向链表 public static Node mergeTwoList(Node head1,Node head2){
2022-01-15 20:11:40
257
原创 反向打印单向链表
一.实现思路 1)准备一个栈 stack 2)对链表进行遍历 3)将元素按遍历顺序压入到栈中 4)根据栈的特性,先进后出,打印出来的结果就是反向遍历 二.代码实现 //从尾到头打印(遍历)链表 public void printDesc(Node head) { if (head.next == null) { System.out.println("链表为空"); } ...
2022-01-13 22:25:58
251
原创 实现单向链表的反转
一.实现思路 1)准备一个新的头节点 2)准备一个指针变量cur指向第一个节点 3)对链表进行遍历 4)先保存cur的下一个节点到next变量,要不节点会丢失 5)cur.next = newHead.next 6) newHead.next = cur 7) 再让cur 指向 下一个节点next, cur = next 8)最后,将原来的head节点指向newHe...
2022-01-13 21:59:32
342
原创 单链表拿到倒数第N个节点
一.实现思路 转变一下思路,因为单链表是只能正向遍历的,所以遍历的次数为(链表长度-N),拿到的节点即为倒数第N个节点 二.代码实现 //拿到节点的个数 public int getNodeNum(Node head) { if (head.next == null) { return 0; } int count = 0; Node cur = head.next; ...
2022-01-13 21:30:17
784
原创 Java手写单向链表
一.添加功能 (1)在尾部添加实现思路 从头开始遍历链表,当前节点的next节点为null,说明到最后一个节点了, cur.next = node就将新节点添加了进去。 (2)有序的添加节点实现思路 因为单向链表是只能向后遍历的,所以在对节点进行比较的时候,需要拿到前一个节点,比较条件是 cur.next.id > node.id ,这个时候跳出循环,然后让 node.next = cur.next , cur.next = node,这样就能将节点添加进去了 二.删除功能 (1)删
2022-01-13 21:07:11
320
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人