链表demo002
2014-09-09 20:55
197 查看
给定(已生成)一个带表头结点的单链表,设head为头指针,结点的结构为(data,next),data为整型元素,next为指针,试写出算法:按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求:不允许使用数组作辅助空间)
(使用p.next.data可以少声明一个变量)
package datastructure; /** * 给定(已生成)一个带表头结点的单链表,设head为头指针,结点的结构为(data,next),data为整型元素,next为指针,试写出算法: * 按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。(要求;不允许使用数组作辅助空间) * * @author gejing * */ public class Demo002 { public static void main(String[] args) { // 构造一个单向链表 Node head = new Node(); Node temp; Node currentNode = head; for (int i = 0; i < 10; i++) { temp = new Node((int) (Math.random() * 100)); currentNode.next = temp; currentNode = currentNode.next; } // 显示链表内容 show(head); Demo002 demo002 = new Demo002(); System.out.println("按从小到大输出"); while (head.next != null) { demo002.findMin(head); show(head); } } /** * print the linklist */ public static void show(Node head) { Node currentNode = head.next; if (currentNode == null) { System.out.println("链表为空(没有删除头结点)"); } while (currentNode != null) { System.out.print(currentNode.data + " "); currentNode = currentNode.next; } System.out.println(); } /** * 找出当前链表的最小数据结点,输出其数据并删除该结点 */ public void findMin(Node head) { Node currentNode = head.next;// 当前工作结点 Node currentPre = head;// 当前结点的直接前驱 Node minNodePre = null;// 记录最小结点的直接前驱 if (currentNode == null) { System.out.println("The linklist is empty"); return; } int min = Integer.MAX_VALUE; while (currentNode != null) { if (currentNode.data <= min) { minNodePre = currentPre; min = currentNode.data; } currentPre = currentPre.next; currentNode = currentNode.next; } System.out.println("min: " + min + " 并删除该结点"); // 删除最小结点 minNodePre.next = minNodePre.next.next; System.gc(); } }
(使用p.next.data可以少声明一个变量)
相关文章推荐
- PAT L2-002. 链表去重 巧妙利用数组的索引
- CCCC题集 L2-002. 链表去重 ( 简单模拟
- L2-002. 链表去重_2018_3_29
- PAT L2-002. 链表去重 模拟
- L2-002. 链表去重(vector)
- PAT L2-002. 链表去重 巧妙利用数组的索引
- PAT天梯赛 L2-002. 链表去重 【STL】
- 【L2-002. 】链表去重 【模拟】
- L2-002. 链表去重
- 团体程序设计天梯赛L2-002 链表去重
- PAT L2-002. 链表去重 巧妙利用数组的索引
- L2-002. 链表去重
- PATL2-002. 链表去重。细心,格式
- 团体程序设计天梯赛-练习集 L2-002. 链表去重 解题报告
- L2-002. 链表去重
- PAT 天梯赛 L2-002 链表去重
- 检查一个链表是否存在环的demo程
- BZOJ 1695 [Usaco2007 Demo]Walk the Talk 链表+数学
- L2-002 链表去重(抽象链表+标记法)