java数据结构与算法
Ezreal66
这个作者很懒,什么都没留下…
展开
-
单向环形链表解决约瑟夫问题
一.约瑟夫问题从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 · 261 阅读 · 0 评论 -
手写双向链表
一.实现思路(1) 添加功能1) 添加到末尾cur.next = newNodenewNode.pre = cur2) 添加到中间cur.pre.next = nodenode.pre = cur.prenode.next = curcur.pre =...原创 2022-01-15 21:22:20 · 381 阅读 · 0 评论 -
合并两个有序的单向链表
一.实现思路1.准备一个新的头节点,还有它的当前指正newCur2.两条链表都准备一个指针cur,指向当前位置3.两个cur作对比,id值小的用一个节点next保存下一个节点,防止节点断开,然后将当前节点连接到新的链表4.如果一条节点已经遍历完了,newCur.next = 另一条链表的cur节点就可以了二.代码实现 //合并两个有序的单向链表 public static Node mergeTwoList(Node head1,Node head2){原创 2022-01-15 20:11:40 · 233 阅读 · 0 评论 -
反向打印单向链表
一.实现思路1)准备一个栈 stack2)对链表进行遍历3)将元素按遍历顺序压入到栈中4)根据栈的特性,先进后出,打印出来的结果就是反向遍历二.代码实现 //从尾到头打印(遍历)链表 public void printDesc(Node head) { if (head.next == null) { System.out.println("链表为空"); } ...原创 2022-01-13 22:25:58 · 213 阅读 · 0 评论 -
实现单向链表的反转
一.实现思路1)准备一个新的头节点2)准备一个指针变量cur指向第一个节点3)对链表进行遍历4)先保存cur的下一个节点到next变量,要不节点会丢失5)cur.next = newHead.next6) newHead.next = cur7) 再让cur 指向 下一个节点next, cur = next8)最后,将原来的head节点指向newHe...原创 2022-01-13 21:59:32 · 314 阅读 · 0 评论 -
单链表拿到倒数第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 · 745 阅读 · 0 评论 -
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 · 288 阅读 · 0 评论 -
Java数组实现队列+环形队列
Java数组实现队列+环形队列原创 2022-01-12 21:57:14 · 273 阅读 · 0 评论 -
二维数组转稀疏数组
Java实现二维数组转稀疏数组原创 2022-01-12 00:16:56 · 2145 阅读 · 0 评论