您的位置:首页 > 理论基础 > 数据结构算法

Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)

2015-10-05 11:12 966 查看
1. 请用LinkedList模拟栈数据结构的集合,并测试:

  题目的意思是:
   你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟,使用LinkedList功能方法封装成自己的方法。

2. 代码解析:

(1)定义自己集合类MyStack,模拟栈数据结构( 先进后出 )

 package cn.itcast_05;

import java.util.LinkedList;

/**
* 自定义的栈集合
*
* @author Mr He
* @version V1.0
*/
public class MyStack {
private LinkedList link;

public MyStack() {
link = new LinkedList();
}

public void add(Object obj) { // 底层调用的是LinkedList的addFirst()方法,每次都在起始位置添加
link.addFirst(obj);
}

public Object get() {  //底层调用的是LinkedList的removeFirst()方法,取出数据(弹栈),原来的集合中不再含有这个元素。
// return link.getFirst();
return link.removeFirst();
}

public boolean isEmpty() {//底层调用的是LinkedList的isEmpty()方法,判断集合内部数据是否为空
return link.isEmpty();
}
}


(2)MyStack的测试:

 package cn.itcast_05;

/*
* MyStack的测试
*/
public class MyStackDemo {
public static void main(String[] args) {
// 创建集合对象
MyStack ms = new MyStack();

// 添加元素
ms.add("hello");
ms.add("world");
ms.add("java");

// System.out.println(ms.get());
// System.out.println(ms.get());
// System.out.println(ms.get());
// NoSuchElementException  栈数据结构获取的时候,它是弹栈(出栈),原来集合中数据会一个个清除(先进后出),遍历的时候要防止集合为空,加判断
// System.out.println(ms.get());

while(!ms.isEmpty()){
System.out.println(ms.get());
}
}
}


运行效果如下:



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: