用LinkedList list实现栈的功能
package homework;
public class Dog extends Pet {
String strain = "dogxx";
int love=80;
public Dog() {
}
public String getStrain() {
return strain;
}
public void setStrain(String strain) {
this.strain = strain;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Dog(String name,String strain,int health) {
super(name,health);
this.strain = strain;
}
public void print() {
super.print();
System.out.println(" "+strain);
}
@Override
//自定义规则去比较 equals
public boolean equals(Object obj) {
if(this == obj) {
return true;
}
if(obj instanceof Dog) {
Dog dog = (Dog)obj;
//狗的品种和名称 相等
if(dog.strain.equals(this.strain) && dog.name.equals(this.name)) {
return true;
}
}
return false;
}
@Override
public String toString() {
String str = this.name+"\t"+this.strain+"\t"+this.health;
return str;
}
public void toHos() {
this.health += 50;
System.out.println("狗打针,吃药!");
}
@Override
public void eat() {
if(this.health+3 > 100) {
System.out.println("不能再吃了!");
} else {
System.out.println("狗在吃东西");
this.health += 3;
}
}
public void jiao() {
System.out.println("狗狗叫!");
}
}
//父类
package homework;
public abstract class Pet {
String name="无名";
int health=100;
int love=100;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getHealth() {
return health;
}
public void setHealth(int health) {
this.health = health;
}
public int getLove() {
return love;
}
public void setLove(int love) {
this.love = love;
}
public Pet() {}
public Pet(String name,int health) {
this.name = name;
this.health = health;
}
public void print() {
System.out.println(name+" "+health+" "+love);
}
public void toHos() {
this.health += 50;
}
public abstract void eat();
public abstract void jiao();
}
//栈
package homework;
import java.util.LinkedList;
//10 dog
public class Stack {
LinkedList list = new LinkedList();
//入栈
public void push(Pet pet) {
list.addFirst(pet);
}
//出栈 顺便把数据清除掉
public Pet pop() {
return (Pet) list.removeFirst();
}
//判断是否满了
public boolean isFull() {
if(list.size() >= 10) {
return true;
} else {
return false;
}
}
//判断栈是否空了
public boolean empty() {
if(list.size()==0) {
return true;
} else {
return false;
}
}
}
//测试文件
package homework;
public class Test {
public static void main(String[] args) {
Stack stack = new Stack();
for (int i = 0; i < 100; i++) {
Dog dog = new Dog();
dog.setName("神犬"+(i+1)+"号");
dog.setStrain("神犬");
if(!stack.isFull()) {
stack.push(dog);
System.out.println(dog.getName());
} else {
break;
}
}
do {
Pet pet = stack.pop();
System.out.println(pet.getName());
} while(!stack.empty());
if(stack.empty()) {
System.out.println("栈清空了!");
} else {
System.out.println("栈还没空!");
}
}
}
用LinkedList list实现栈的功能的更多相关文章
- 用LinkedList集合演示栈和队列的操作
在数据结构中,栈和队列是两种重要的线性数据结构.它们的主要不同在于:栈中存储的元素,是先进后出:队列中存储的元素是先进先出.我们接下来通过LinkedList集合来演示栈和队列的操作. import ...
- 采用LinkedList来模拟栈数据结构的集合--先进后出
三.用LinkedList来模拟栈数据结构的集合 /* * 自定义一个数据结构为LinkedList的集合类*/public class MyCollection_LinkedList { publi ...
- LinkedList集合 实现栈和队列
LinkedList集合的底层是链表结构实现的,所以可以模拟栈(先进后出)和队列(先进先出). 方法: addFirst() //添加元素到列表的起始位置 addLast() //添加元素到列表的结束 ...
- 【Java基础】用LinkedList实现一个简单栈的功能
栈的基本功能 栈的最基本功能是保障后进先出,然后在此基础上可以对在栈中的对象进行弹入弹出,此外,在弹出时,如果栈为空,则会报错,所以还需要提供获取当前栈大小的方法. 构造存储对象Student /** ...
- 数据结构之栈-JavaScript实现栈的功能
记录自己的学习 栈(stack)又名堆栈,它是一种运算受限的线性表.其限制是仅允许在表的一端进行插入和删除运算.这一端被称为栈顶,相对地,把另一端称为栈底.向一个栈插入新元素又称作进栈.入栈或压栈,它 ...
- 使用java.util.LinkedList模拟实现内存页面置换算法--LRU算法
一,LRU算法介绍 LRU是内存分配中“离散分配方式”之分页存储管理方式中用到的一个算法.每个进程都有自己的页表,进程只将自己的一部分页面加载到内存的物理块中,当进程在运行过程中,发现某页面不在物理内 ...
- java 持有对象
1.泛型和类型安全的容器 ArrayList,可以自动扩充大小的数组,add插入对象,get访问对象,size查看对象数目. 1 /** 2 * 泛型和类型安全的容器 3 * 2016/5/6 4 * ...
- Java基础知识强化之集合框架笔记29:使用LinkedList实现栈数据结构的集合代码(面试题)
1. 请用LinkedList模拟栈数据结构的集合,并测试: 题目的意思是: 你自己的定义一个集合类,在这个集合类内部可以使用LinkedList模拟,使用LinkedList功能方法封装成 ...
- 用LinkedList模拟Stack功能
集合体系在Java中比较重要,整个集合体系是在JDK1.2版本后出现,Collection作为整个体系的顶层,拥有整个体系通用的功能.对于其下面的小弟,也是各有千秋.下面就一道面试题来看看Linked ...
随机推荐
- 二、mysql存储引擎之InnoDB
一.存储引擎简介 mysql采用业务逻辑和数据存储分离的架构,底层的存储引擎为上层的SQL层提供了支持:mysql采用的是插件的方式将存储引擎直接加载到正在运行的MySQL中,这是mysql的一个重要 ...
- python的爬虫
requests库的安装 https://blog.csdn.net/xiaokuang5020/article/details/80580631 Response对象属性 属性 说明 r.statu ...
- bnu Game 博弈。
Game Time Limit: 10000ms Case Time Limit: 10000ms Memory Limit: 65536KB 64-bit integer IO format: ...
- lintcode 刷题记录··
单例模式,用C#实现过单例模式,python区别就是类里边的静态方法写法不一样,python叫类方法,函数之前加@classmethod class Solution: # @return: The ...
- String.replace使用技巧
relace replace() 方法返回一个由替换值替换一些或所有匹配的模式后的新字符串.模式可以是一个字符串或者一个正则表达式, 替换值可以是一个字符串或者一个每次匹配都要调用的函数. 使用字符串 ...
- IntelliJ IDEA开发工具println报错的解决方法
IntelliJ IDEA 编译 JSP,出现 out.println 报错,下图所示: 报错原因:println报红,这是因为没有关联好服务器! 解决方案:点击File->Project st ...
- Unable to create a constant value of type 'System.Object'. Only primitive types or enumeration types are supported in this context.
代码如下: var query = from s in db.LoginUserServices join ss in db.Services on s.ServiceType equals ss.C ...
- 故障排除:无法启动、访问或连接到 Azure 虚拟机上运行的应用程序
有多种原因可导致无法启用或连接到在 Azure 虚拟机 (VM) 上运行的应用程序.原因包括应用程序未在预期端口上运行或侦听.侦听端口受到阻止,或网络规则未将流量正确传递到应用程序.本文说明有条理地找 ...
- Oracle GoldenGate 详解
一.Oracle GoldenGate介绍 GoldenGate软件是一种基于日志的结构化数据复制软件.GoldenGate 能够实现大量交易数据的实时捕捉.变换和投递,实现源数据库与目标数据库的数据 ...
- lvm 相关
求教:/home分区和/root分区的关系 lvm扩容试验 [复制链接] lvm快速使用http://imysql.cn/2008_05_05_quick_startup_lvm Linux LVM学 ...