算法-链表
六月二十七
乘风破浪会有时,直挂云帆济沧海。
展开
-
链表-判定两个链表是否相交
原创 2019-03-09 12:25:52 · 200 阅读 · 0 评论 -
链表-两个单链表生成相加链表
//两个单链表生成相加链表//利用栈结构public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node addList(Node head1,Node head2){ Stack&...原创 2019-03-11 00:56:00 · 283 阅读 · 0 评论 -
链表-删除链表a/b处的节点
//删除链表a/b处的节点public Node removeByBatio(Node head,int a,int b){ if(a<1||a>b){ return head; } int len=0; Node cur=head; while(cur!=null){ len++ cur=cu...原创 2019-03-11 09:56:36 · 199 阅读 · 0 评论 -
链表-返回链表第一个进入环的节点
//返回链表第一个进入环的节点public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node getLoopNode(Node head){ if(head==null||head....原创 2019-03-11 10:12:51 · 354 阅读 · 0 评论 -
链表-返回两个无环链表的相交节点
//返回两个无环链表的相交节点public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node getIntersectNode(Node head1,Node head2){ if(...原创 2019-03-11 10:24:04 · 230 阅读 · 0 评论 -
链表-返回两个链表的第一个公共节点
//返回两个链表的第一个公共节点public Node FindFirstCommonNode(Node head1, Node head2) { Node p1 = head1; Node p2 = head2; while (p1 != p2){ p1 = (p1 != null ? p1.next : head2); p2 = (p...原创 2019-03-11 10:40:35 · 202 阅读 · 0 评论 -
链表-将搜索二叉树转换成双向链表
//将搜索二叉树转换成双向链表//利用队列public class Node{ public int value; public Node left; public Node right; public Node(int data){ this.value=data; }}public Node searchBinaryTreeCo...原创 2019-03-12 00:05:13 · 141 阅读 · 0 评论 -
链表-单链表的选择排序
//单链表的选择排序public static Node selectSort(Node head){ Node tail=null;//排序部分尾部 Node cur=head;//未排序部分头部 Node smallPre=null;//最小节点的前一个节点 Node small=null;//最小的节点 while(cur!=null){ ...原创 2019-03-12 00:05:30 · 220 阅读 · 0 评论 -
链表-复制含有随机指针节点的链表
//复制含有随机指针节点的链表public Node copyLinkedListWithRand(Node head){ if(head==null){ return null; } Node cur=head; Node next=null; //复制并链接每一个节点 while(cur!=null){ nex...原创 2019-03-12 00:05:22 · 207 阅读 · 0 评论 -
链表-单链表的选择排序
//单链表的选择排序public static Node selectSort(Node head){ Node tail=null;//排序部分尾部 Node cur=head;//未排序部分头部 Node smallPre=null;//最小节点的前一个节点 Node small=null;//最小的节点 while(cur!=null){ ...原创 2019-03-12 00:05:02 · 493 阅读 · 0 评论 -
链表-返回链表长度
//返回链表长度public int length(){ int len=0; Node tmp=head; while(tmp!=null){ len++; tmp=tmp.next; } return len;}原创 2019-03-12 00:04:49 · 4995 阅读 · 0 评论 -
链表-在链表尾部插入新节点
//在链表尾部加入新节点public class Node{ public int data; public Node next; public Node(int data){ this.data=data; }}public void addNode(int n){ Node newNode=new Node(n); if(...原创 2019-03-12 00:04:40 · 3669 阅读 · 0 评论 -
链表-检查链表长度是奇数还是偶数
//检查链表长度是奇数还是偶数public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public void isLinkedListLengthEven(Node head){ while(hea...原创 2019-03-13 08:54:48 · 532 阅读 · 0 评论 -
链表-求链表环的长度
//求链表环的长度public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public int findLoopLength(Node head){ Node fast=head; Node...原创 2019-03-13 08:54:57 · 1153 阅读 · 0 评论 -
链表-逐对逆序链表
//逐对逆序链表public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}//递归实现public Node reversePairRecursive(Node head){ Node tmp; ...原创 2019-03-13 08:54:40 · 142 阅读 · 0 评论 -
链表-将单链表的每k个节点之间逆序
//将单链表的每k个节点之间逆序//利用栈结构public Node reverseKNode(Node head,int k){ if(k<2){ return head; } Stack<Node> stack=new Stack<Node>(); Node newHead=head; Node cur...原创 2019-03-11 00:52:47 · 351 阅读 · 0 评论 -
链表-删除链表的中间节点
//删除链表的中间节点public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node removeMidNode(Node head){ if(head==null||head.ne...原创 2019-03-11 00:50:31 · 674 阅读 · 1 评论 -
链表-反转部分单向链表
//反转部分单向链表public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node reversePartLinkedList(Node head,int from,int to){ ...原创 2019-03-11 00:46:50 · 224 阅读 · 0 评论 -
链表-从尾到头输出单链表
原创 2019-03-09 12:22:11 · 525 阅读 · 0 评论 -
链表-不知道头结点的情况下删除指定结点
原创 2019-03-09 12:32:07 · 954 阅读 · 0 评论 -
链表-检测一个链表是否有环
原创 2019-03-09 12:34:42 · 238 阅读 · 0 评论 -
链表-找出单链表中倒数第k个数
原创 2019-03-10 08:43:25 · 1261 阅读 · 0 评论 -
链表-反转单向链表
//反转单向链表public void ReverseLinkedList(Node head){ Node pre=null; Node next=null; while(head!=null){ next=head.next; head.next=pre; pre=head; head=next; ...原创 2019-03-10 09:34:39 · 140 阅读 · 0 评论 -
链表-寻找单链表的中间结点
//寻找单链表的中间结点//思路:定义快指针fast,慢指针slowpublic Node searchMediumNode(Node head){ Node fast=head; Node slow=head; while(fast!=null&&fast.next!=null&&fast.next.next!=null){ ...原创 2019-03-10 10:33:40 · 224 阅读 · 0 评论 -
链表-从链表中删除重复的数据
//从链表中删除重复的数据//1.使用Hashtablepublic void deleteDuplecateData(Node head){ Hashtable<Integer,Integer> table=new Hashtable<Integer,Integer>(); Node tmp=head; Node pre=null; ...原创 2019-03-10 10:48:32 · 597 阅读 · 0 评论 -
链表-在单链表中删除指定值的节点
//在单链表中删除指定值的节点//1.利用栈public Node removeValue(Node head,int num){ Stack<Node> stack=new Stack<Node>(); while(head!=null){ if(head.value!=num){ stack.push(hea...原创 2019-03-10 18:17:46 · 236 阅读 · 0 评论 -
链表-向有序环形单链表中插入节点
//向有序环形单链表中插入节点public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node insertNum(Node head,int num){ Node node=new ...原创 2019-03-10 18:19:07 · 203 阅读 · 0 评论 -
链表-合并两个有序单链表
//合并两个有序单链表public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node mergeLinkedList(Node head1,Node head2){ if(head1...原创 2019-03-10 18:21:23 · 228 阅读 · 0 评论 -
链表-在双链表中删除倒数第k个节点
//在双链表删除倒数第k个节点public class DoubleNode{ public int value; public DoubleNode last; public DoubleNode next public DoubleNode(int data){ this.value=data; }}public DoubleNo...原创 2019-03-10 18:23:42 · 127 阅读 · 0 评论 -
链表-打印两个有序链表的公共部分
//打印两个有序链表的公共部分public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public void printCommonPart(Node head1,Node head2){ Syst...原创 2019-03-10 18:27:37 · 117 阅读 · 0 评论 -
链表-判断一个链表是否为回文结构
//判断一个链表是否为回文结构//利用栈结构public boolean isPalindrome(Node head){ Stack<Node> stack=new Stack<Node>(); Node cur=head; while(cur!=null){ stack.push(cur); cur=cur....原创 2019-03-11 09:36:39 · 285 阅读 · 0 评论 -
链表-环形单链表的约瑟夫问题
//环形单链表的约瑟夫问题public class Node{ public int value; public Node next; public Node(int data){ this.value=data; }}public Node josephusKill(Node head,int m){ if(head==null||...原创 2019-03-11 00:44:38 · 159 阅读 · 0 评论 -
链表-交换单链表的相邻节点
//交换单链表的相邻节点public Node swapPairs(Node head) { if(head == null||head.next==null){ return head; } Node cur = head; Node prev = cur; // 连接每对节点 if(cur.next != null...原创 2019-03-13 09:27:44 · 2698 阅读 · 0 评论