链式堆栈
来源:互联网 发布:蚁群优化算法 matlab 编辑:程序博客网 时间:2024/06/10 08:20
链式堆栈的存储结构
如同单链表结构,每个结点会有俩个区域,一个数据元素区(element),用来存放数据元素;另一个是指针区(next),用来构造数据元素之间的关系。
堆栈有两端:栈顶top,参与各种对堆栈的操作;另一端是栈底。
我们把链表的head端作为栈顶,另一端作为栈底。这样插入和删除栈顶元素时,无须遍历整个链表所以时间复杂度为O(1)。
由于堆栈的入栈和出栈都是固定在栈顶进行的,不存在单链表插入或删除操作允许在任意位置进行,所以,链式堆栈通常不带头结点。
Stack接口类设计
Stack.java
package 堆栈;
public interface Stack {
//入栈
public void push(Object obj)throws Exception;
//出栈
public Object pop() throws Exception;
//获取栈顶元素
public Object getTop()throws Exception;
//判断栈不为空
public boolean notEmpty();
}
Node结点类设计
Node.java
package 堆栈;
public class Node {
Object element;//数据域
Node next;//指针域
//头结点的构造方法
public Node(Node nextval){
this.next=nextval;
}
//非头结点的构造方法
public Node(Object obj,Node nextval){
this.element=obj;
this.next=nextval;
}
//获得当前结点的后继结点
public Node getNode(){
return this.next;
}
//获得当前的数据域的值
public Object getDate(){
return this.element;
}
//设置当前结点的指针域
public void setNext(Node nextval){
this.next=nextval;
}
//设置当前结点的数据域
public void setDate(Object obj){
this.element=obj;
}
//转换数据元素为String类型
public String toString(){
return this.toString();
}
}
测试类设计
LinListTest.java
package 堆栈;
public class LinStackTest {
public static void main(String[] args) {
LinStack mystack=new LinStack();
int test[]={1,2,3,4,5,6};
int n=6;
try{
for(int i=0;i<n;i++)
{
mystack.push(new Integer(test[i]));
}
System.out.println("当前栈顶元素为:"+mystack.getTop());
System.out.println("出栈元素序列为:");
while(mystack.notEmpty()){
System.out.print(mystack.pop()+"\t");
}
}catch(Exception e){
System.out.println(e.getMessage());
}
}
}
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 链式堆栈
- 链式实现的堆栈
- 链式堆栈实现
- 泛型链式堆栈
- 链式堆栈的实现
- 堆栈--链式存储
- 链式结构的堆栈
- 数据结构--链式堆栈
- 链式堆栈.c
- 链式堆栈的实现 (带头节点的链式堆栈)
- 测试链式堆栈的实例
- c 堆栈的链式存储
- 堆栈的链式储存实现
- 用链表实现堆栈--链式栈
- JS 上传文件之FormData 与Blob 对象
- iOS 条形码、二维码心得
- 基于javamail简单实现邮件发送
- Retrofit 2.0 + OkHttp 3.0 配置
- numpy下的flatten()函数用法
- 链式堆栈
- 欢迎使用CSDN-markdown编辑器
- Mac使用SSH key连接vps
- Java中instanceof的用法
- HDU1518-Square
- httpDNS相关以及进一步切合调度302,实现精准调度
- 如何解决虚拟机上Ubuntu could not resolve 'us.archive.ubuntu.com'的错误
- 配置java、Android开发环境注意
- 躲避 HSTS 的 HTTPS 劫持