今天开始学习泛类堆栈类
来源:互联网 发布:c语言自学软件手机版 编辑:程序博客网 时间:2024/06/05 07:13
//泛型堆栈类示例代码public class LinkedStack<T>{ private static class Node<U> { U item; Node<U> next; Node() { item = null;next = null; } Node(U item,Node<U> next) { this.item = item; this.next = next; } boolean end() { return item == null && next == null; } } private Node<T> top = new Node<T>(); public void push(T item){ top = new Node<T>(item,top); } public T pop(){ T result = top.item; if(!top.end()) { top = top.next; } return result; } public static void main(String[] args) { LinkedStack<String> lss = new LinkedStack<String>(); for(String s: "Phasers or stun!".split(" ")) lss.push(s); String s; while((s = lss.pop()) != null) { System.out.println(s); } }}
该例子主要是实现了一个简单的泛型堆栈类,将s切割为3个字符串对象分别利用push方法压入堆栈中,而后在循环中使用pop方法将对象压出并打印。
在原来的C语言编程中实现堆栈,都是通过指针和结构体来实现的。但是在面向对象语言中实现堆栈还是有着很大的不同。首先ListedStack类中包含着一个内部类Node节点,该节点的主要作用是用来装载堆栈中的元素,而ListedStack类提供了相应的方法。从main函数开始,创建引用lss,并指向LinkedStack<String>类型的对象,该对象拥有值为null的字段item和一个Node<T>类型的引用,进入for循环后,利用push方法将“Phasers”,“or”,"stun"对象压入堆栈中,push方法内部原理是:首先上一步创建了一个空节点,top引用指向空节点对象,而push方法首先创建一个新的节点对象,并对该节点对象元素赋值(item,next),将空节点对象的引用赋给新的节点对象的next字段,然后将新的节点对象的地址赋给top引用,这样就压入了一个对象,而后将继续按照这种方式将剩下的两个对象分别压入堆栈中。同时pop方法则是将top指向的对象中的item元素值取出,并将该对象的next引用指向的对象赋给top引用,这样就实现了一次压出一个对象的操作,同理之后的操作按照这种方式进行即可实现压出操作。
注:其中pop方法中有个“末端哨兵”,其主要作用是用来判断当前节点是否是空节点,如果为空,则认为堆栈为空。
阅读全文
0 0
- 今天开始学习泛类堆栈类
- 今天开始学习DEPHI
- 今天开始学习C#
- 今天开始学习Java!
- 今天开始学习ASP
- 今天开始学习MFC
- 今天开始学习Linux
- 今天开始学习python
- 今天开始学习C#
- 今天开始学习AJAX
- 今天开始学习吉他
- 今天开始学习emacs
- 今天开始学习MFC!
- 今天开始学习Struts2
- 今天开始学习.NET
- 今天开始重新学习!
- 今天开始学习QT
- 今天开始学习VC#
- 十几行代码搞定Android调用支付宝支付
- git提交代码时遇到代码库有更新以及本地有更新的解决方法
- iOS应用瘦身方法思路整理
- ifstream 文件读写 文件删除
- HTTP响应头和请求头信息对照表
- 今天开始学习泛类堆栈类
- 安卓小项目之Everyday(3)--将笑话数据显示listview中
- HBase之CMS GC调优
- CMenu自绘
- java servlet基本操作 以及将数据库表上传到网页的程序举例
- POI与JXL的区别
- 没有对错,只是轮回
- Java 多线程
- TCP/IP,http,socket,长连接,短连接