Java数据结构---链表常用操作(II)--续
来源:互联网 发布:电磁炉和电陶炉 知乎 编辑:程序博客网 时间:2024/06/08 18:03
此文是续上篇博客内容,包括很多经典的算法,也包括很多编程技巧,希望对广大朋友有帮助。
(8)//查找倒数第几个元素 public Node findBackthData(int num)
(9)//反转链表 public void reverseLink()
(10)public void printReverseLink(Node pNode)
(10)//找到列表中间的节点 public void findMidNode()
(11)//判断列表中是否有环路 public boolean isLoop()
(12)//在不知道头指针的情况下,删除该节点 public boolean deleteNode(Node node)
//查找倒数第几个元素public Node findBackthData(int num){if(num < 1 || num > length()){return null;}Node preNode = head;Node nextNode = head;int i = 1;while(i <= num){nextNode = nextNode.next;i++;}while(nextNode != null){preNode = preNode.next;nextNode = nextNode.next;}System.out.println(preNode.data);return preNode;}//反转列表public void reverseLink(){Node reverseNode = head;Node nextNode = null;Node pNode = head;Node preNode = null;while(pNode != null){nextNode = pNode.next;if(nextNode == null)reverseNode = pNode;pNode.next = preNode;preNode = pNode;pNode = nextNode;this.head = reverseNode;}}public void printReverseLink(Node pNode){if(pNode!= null){//pNode = pNode.next;printReverseLink(pNode.next);System.out.print(pNode.data + "\t");}System.out.println();}//找到列表中间的节点public void findMidNode(){Node preNode = head;Node nextNode = head;while(preNode != null && preNode.next != null && preNode.next.next != null){preNode = preNode.next.next;nextNode = nextNode.next;}System.out.println("the data of the mid is : "+ nextNode.data);if(preNode.next != null){System.out.println("the data of the mid is : "+ nextNode.next.data);}}//判断列表中是否有环路public boolean isLoop(){Node fast = head;Node slow = head;if(fast == null){return false;}while(fast != null && fast.next != null){fast = fast.next.next;slow = slow.next;if(fast == slow){return true;}}return !(fast == null || fast.next == null);}//在不知道头指针的情况下,删除该节点public boolean deleteNode(Node node){if(node == null || node.next ==null){return false;}Node nextNode = node.next;int temp = nextNode.data;node.data = nextNode.data;nextNode.data = temp;node.next = node.next.next;return true;}public static void main(String[] args) {MyLink ml = new MyLink();ml.addNode(1);ml.addNode(3);ml.addNode(5);ml.addNode(2);ml.addNode(4);ml.printLink();ml.orderLink();ml.printLink();ml.deleteNode(1);ml.printLink();ml.addNode(4);ml.printLink();ml.orderLink();ml.printLink();ml.delDup();ml.printLink();ml.addNode(6);ml.addNode(7);Node delete = ml.addNode(8);ml.addNode(9);ml.printLink();/*ml.findBackthData(2);ml.printLink();//ml.reverseLink();//ml.printLink();ml.printReverseLink(MyLink.head);*/ml.findMidNode();/*ml.deleteNode(1);ml.printLink();ml.findMidNode();*///Node node = new Node(8);ml.printLink();ml.deleteNode(delete);ml.printLink();}}
0 0
- Java数据结构---链表常用操作(II)--续
- Java数据结构---链表常用操作(I)
- JAVA 常用数据结构操作
- 【数据结构与算法】java链表操作
- 《数据结构》 顺序表常用操作代码集合
- 数据结构之顺序表常用操作整理
- 常用的JavaScript操作II
- [数据结构]链表操作
- 数据结构-链表操作
- 链表的常用操作(java实现)
- 数据结构之链表的增删操作的Java实现
- java常用数据结构排序算法(续)
- java常用数据结构---线性表---链式存储
- java常用数据结构常用方法
- [数据结构学习]单链表常用操作
- Redis常用数据结构及操作
- JAVA常用数据结构
- java 常用数据结构
- 第二章
- out-of-band data 带外数据
- POJ1363
- PickerView的相关属性用法
- 图片轮播
- Java数据结构---链表常用操作(II)--续
- [省选前题目整理][SPOJ OPTM]Optimal Marks(最小割)
- 改变
- c#属性
- vs2008无法执行添加/移除操作,因为代码元素**是只读的
- BFPRT 算法
- 九度OJ-1107-搬水果
- 第二章
- 关掉防火墙命令