java泛型编程之泛型链栈
来源:互联网 发布:win10无法安装软件 编辑:程序博客网 时间:2024/06/05 15:08
最近突然打算好好学一下java,因此每天给自己定的看三节java编程思想,并用scdn记录下来,权当是检验自己对于语言的理解程度
链栈故名思议是一条头尾相连的链条,就像数据结构里面的链表一样
struct Node{int item;Node * next;}这是c里面的结构体,用指针将整个链表串联起来,java里面则没有指针,但是也可以构造一个链栈,栈就是先进后出的一种数据结构,要明确栈里面
是要装一些数据类型的对象的,多的不说贴代码先:
package com;public class test<T>{static private class Node<U>//内部类{private U u;Node<U> next;Node(){u=null;next=null;}Node(U item,Node<U> next){this.u=item;this.next=next;}boolean end()//判断链栈中元素是否取完或者为空{return u==null&&next==null;}}Node<T> top=new Node<T>();//节点元素public void push(T item)//入栈{top=new Node<T>(item,top);//每次都新建一个Node,然后新的Node里的成员的Node是先前的Node,也就是将新的Node和旧的Node建立一种联系,形成一个链栈,类似数据结构里面的链表,最开始的元素相当于头结点,节点刚开始元素都为空}public T pop()//出栈{T result=top.u;//暂存表头元素if(!top.end())//判断链栈内元素是否为空{top=top.next;//让第二个元素为此时链栈的头顶元素}return result;//返回表头元素}}首先是一个泛型类test<T>,然后在这个泛型类里面又有一个内部类Node<U>,这个内部类就包含一个数据类型元素:U u,然后又包含一个自己类型的对象,为什么要这样做呢,就像c语言里面的链表一样,为了将整个链栈串联起来,串联逻辑会在后面的方法里面得到体现,这个内部类有两种构造方式,一个为无参构造,一个为有两个元素的有参
构造,有参构造里面有两个数据类型对象参数,一个为需要存储的元素,一个为内部类对象元素,
top=new Node<T>(item,top);这段代码意思可以理解为top.next=原来的top,第一个top是新生成的节点,push方法将新节点,新元素推入栈顶,pop方法将链栈头元素取出来,将头元素里面包含的
节点对象作为新的链栈头,之前需要判断一下链栈是否为空,就是end()方法,最后用main方法测试一下这个链表
<pre name="code" class="java">test<String> temp=new test<String>();//动态建立泛型类型System.out.println(temp.top.u);temp.push("abc");//新元素进栈temp.push("bcd");//第二个元素进栈temp.push("cde");//第三个元素进栈System.out.println(temp.top.u);String str=temp.pop();System.out.println("出栈的表头元素: "+str);System.out.println("新栈的头元素: "+temp.top.u);}执行结果:
<pre name="code" class="java">nullcde出栈的表头元素: cde新栈的头元素: bcd
nullcde出栈的表头元素: cde新栈的头元素: bcd可以看到,最后完美的实现了泛型链栈
0 0
- java泛型编程之泛型链栈
- Java之泛型编程
- Java之泛型编程
- Java之泛型编程
- Java之泛型编程
- Java之泛型编程
- Java之泛型编程
- Java编程笔记之泛型
- java编程思想之接口泛型
- java编程思想之泛型
- java编程之泛型(二)
- java编程之泛型(三)
- Java编程思想之泛型
- JAVA基础之泛型编程
- Java编程基础教程之泛型
- Java编程之范型
- Java 5.0泛型编程之泛型类型
- Java 5.0泛型编程之泛型类型(1)
- 天声人語 20150302
- HDU 1596----find the safest road
- 自动管理代码的android.mk
- UITableViewController基本操作
- 制作单机游戏体力系统
- java泛型编程之泛型链栈
- Notification 与状态栏信息
- FTP上传问题总结
- float浮点数的二进制存储方式及转换
- Linux下 Mysql 安装以及优化
- 基于iOS平台的OCR识别技术的分析与研究
- Web2.5维地图的制作流程【E都市】
- 漫谈程序员系列:咦,你也在混日子啊
- 强制使用HTTPS --- Tomcat篇