单链表的逆转
来源:互联网 发布:开票软件金税盘未响应 编辑:程序博客网 时间:2024/05/16 10:06
输入一个链表,从尾到头打印链表每个节点的值。
public class Solution3 { public static class Node<T>{ public T data; //数据域 public Node<T> next; //地址域 public Node(T data,Node<T> next){ //构造结点 this.data = data; this.next = next; } public Node(){ this(null,null); } } public static class SinglyList<T> extends Object{ public Node<T> head; //头指针变量,指向单链表的头节点 public SinglyList(){ //构造空单链表 this.head = new Node<T>(); //创建头结点,data和next均为null } public SinglyList(T[] values){ this(); //创建空单链表,只有头结点 Node<T> rear = this.head; //rear指向单链表的最后一个结点 for (int i = 0;i < values.length;i++){ //values.length == 0,构造空链表 rear.next = new Node<T>(values[i],null); //尾插入 rear = rear.next; } } public boolean isEmpty(){ //判断链表是否为空 return this.head.next == null; } @Override public String toString(){ //String str = this.getClass().getName()+"("; //返回类名 String str = "("; for (Node<T> p = this.head.next; p != null; p = p.next){ //p遍历单链表 str += p.data.toString(); //等价于str = str+p.data.toString(); if (p.next != null){ str += ","; //不是最后一个结点时,加分隔符 } } return str+")"; //空表返回() } } public static class SinglyList_reverse { //将单链表逆转,泛型方法,返回值类型前声明类型参数T public static <T> void reverse(SinglyList<T> list) { Node<T> p=list.head.next, front=null; //head必须声明为public while (p!=null) { Node<T> succ = p.next; //succ是p结点的后继结点 p.next = front; //使p.next指向p结点的前驱结点 front = p; p = succ; //p到达后继结点 } list.head.next = front; //设置头结点的地址域指向原单链表的最后一个结点 } } public static void main(String args[]) { //String[] values={"A","B","C","D","E","F"}; Integer[] values = {1,2,3,4,5,6,7,8,9,10,11,12}; SinglyList<Integer> lista = new SinglyList<Integer>(values); System.out.println("单链表内容:"+lista.toString()); SinglyList_reverse.reverse(lista); System.out.println("逆转后: "+lista.toString()); }}//输入与输出:// 单链表内容:(1,2,3,4,5,6,7,8,9,10,11,12)// 逆转后: (12,11,10,9,8,7,6,5,4,3,2,1)//// Process finished with exit code 0
0 0
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的就地逆转
- 单链表的逆转
- 单链表的逆转实现
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转问题
- 单链表的逆转
- 单链表的逆转
- 单链表的逆转
- 【Unity3D UGUI】事件接口(三) 按下移动、释放
- 没有IP地址的主机如何保持IP层联通
- 冒泡排序【改进】
- python装饰器使用例子
- 337. House Robber III
- 单链表的逆转
- |poj 1961|KMP|Period
- Hibernate 学习教程
- 十五、Mysql 分组查询
- C. Functions again-最长连续子序列
- 浏览器拦截跨域请求处理方法(同源策略不允许读取服务器远程资源)
- [数据库学习SQLSERVER] 学习笔记
- 八、分组函数/聚合函数/双行处理函数
- 关于zxing扫码界面的优化