1、用链表实现栈

package stack;
/**
*
* @author denghb
*
*/
class Link {
public long dData;
public Link next;
public Link(long dd) {
dData = dd;
}
public void displayLink() {
System.out.print(dData + " ");
}
} class LinkList {
private Link first;
public LinkList() {
first = null;
}
public boolean isEmpty() {
return (first == null);
}
public void insertFirst(long dd) {
Link newLink = new Link(dd);
newLink.next = first;
first = newLink;
}
public long deleteFirst() {
//如果这是一个非空链表
Link temp = first;
first = first.next;
return temp.dData;
}
public void displayList() {
Link current = first;
while(current != null) {
current.displayLink();
current = current.next;
}
System.out.println("");
}
} class LinkStack {
private LinkList theList;
public LinkStack() {
theList = new LinkList();
}
public void push(long j) {
theList.insertFirst(j);
}
public long pop() {
return theList.deleteFirst();
}
public boolean isEmpty() {
return (theList.isEmpty());
}
public void displayStack() {
System.out.print("Stack (top-->bottom): ");
theList.displayList();
}
}
public class LinkStackApp {
public static void main(String[] args) {
LinkStack theStack = new LinkStack();
theStack.push(20);
theStack.push(40); theStack.displayStack(); theStack.push(60);
theStack.push(80); theStack.displayStack(); theStack.pop();
theStack.pop(); theStack.displayStack();
}
}

2、用链表实现队列

package queue;
/**
*
* @author denghb
*
*/
class Link {
public long dData;
public Link next;
public Link(long dd) {
dData = dd;
}
public void displayLink() {
System.out.print(dData + " ");
}
} class FirstLastList {
private Link first;
private Link last; public FirstLastList() {
first = null;
last = null;
}
public boolean isEmpty() {
return (first == null);
}
public void insertLast(long dd) {
Link newLink = new Link(dd);
if(isEmpty()) {
first = newLink;
} else {
last.next = newLink;
}
last = newLink;
}
public long deleteFirst() {
//如果这是一个非空链表
long temp = first.dData;
if(first.next == null) { //如果仅仅有一个链接点
last = null;
}
first = first.next;
return temp;
}
public void displayList() {
Link current = first;
while(current != null) {
current.displayLink();
current = current.next;
}
System.out.println("");
}
} class LinkQueue {
private FirstLastList theList;
public LinkQueue() {
theList = new FirstLastList();
}
public void insert(long j) {
theList.insertLast(j);
}
public long remove() {
return theList.deleteFirst();
}
public boolean isEmpty() {
return (theList.isEmpty());
}
public void displayStack() {
System.out.print("Stack (top-->bottom): ");
theList.displayList();
}
} public class LinkQueueApp {
public static void main(String[] args) {
LinkQueue theQueue = new LinkQueue();
theQueue.insert(20);
theQueue.insert(40); theQueue.displayStack(); theQueue.insert(60);
theQueue.insert(80); theQueue.displayStack(); theQueue.remove();
theQueue.remove();
theQueue.displayStack();
}
}

第一个源程序的输出结果:

Stack (top-->bottom): 40 20 

Stack (top-->bottom): 80 60 40 20 

Stack (top-->bottom): 40 20

第二个源程序的输出结果:

Stack (top-->bottom): 20 40 

Stack (top-->bottom): 20 40 60 80 

Stack (top-->bottom): 60 80

Java用链表实现栈和队列的更多相关文章

  1. Java 用链表实现栈和队列

    栈 是一种基于后进先出(LIFO)策略的集合类型.当邮件在桌上放成一叠时,就能用栈来表示.新邮件会放在最上面,当你要看邮件时,会一封一封从上到下阅读.栈的顶部称为栈顶,所有操作都在栈顶完成. 前面提到 ...

  2. java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

    java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表   数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...

  3. 数据结构 1 线性表详解 链表、 栈 、 队列 结合JAVA 详解

    前言 其实在学习数据结构之前,我也是从来都没了解过这门课,但是随着工作的慢慢深入,之前学习的东西实在是不够用,并且太皮毛了.太浅,只是懂得一些浅层的,我知道这个东西怎么用,但是要优化.或者是解析,就不 ...

  4. 链表、栈、队列、KMP相关知识点

    链表.栈与队列.kmp; 数组模拟单链表: 用的最多的是邻接表--就是多个单链表: 作用:存储树与图 需要明确相关定义: 为什么需要使用数组模拟链表 比使用结构体 或者类来说 速度更快 代码简洁 算法 ...

  5. 图解堆算法、链表、栈与队列(Mark)

    原文地址: 图解堆算法.链表.栈与队列(多图预警) 堆(heap),是一类特殊的数据结构的统称.它通常被看作一棵树的数组对象.在队列中,调度程序反复提取队列中的第一个作业并运行,因为实际情况中某些时间 ...

  6. [Python] 数据结构--实现顺序表、链表、栈和队列

    说明: 本文主要展示Python实现的几种常用数据结构:顺序表.链表.栈和队列. 附有实现代码. 来源主要参考网络文章. 一.顺序表 1.顺序表的结构 一个顺序表的完整信息包括两部分,一部分是表中元素 ...

  7. 线性表 及Java实现 顺序表、链表、栈、队列

    数据结构与算法是程序设计的两大基础,大型的IT企业面试时也会出数据结构和算法的题目, 它可以说明你是否有良好的逻辑思维,如果你具备良好的逻辑思维,即使技术存在某些缺陷,面试公司也会认为你很有培养价值, ...

  8. Java数据结构和算法 - 栈和队列

    Q: 栈.队列与数组的区别? A: 本篇主要涉及三种数据存储类型:栈.队列和优先级队列,它与数组主要有如下三个区别: A: (一)程序员工具 数组和其他的结构(栈.队列.链表.树等等)都适用于数据库应 ...

  9. Java面试题:栈和队列的实现

    面试的时候,栈和队列经常会成对出现来考察.本文包含栈和队列的如下考试内容: (1)栈的创建 (2)队列的创建 (3)两个栈实现一个队列 (4)两个队列实现一个栈 (5)设计含最小函数min()的栈,要 ...

随机推荐

  1. chmod 命令 set uid ,set gid,sticky bit 说明

    permission的符号模式表: 模式 名字 说明 r 读 设置为可读权限 w 写 设置为可写权限 x 执行权限 设置为可执行权限 X 特殊执行权限 只有当文件为目录文件,或者其他类型的用户有可执行 ...

  2. Dom学习笔记-(一)

    一.概述 DOM(文档对象模型)是针对HTML和XML文档的一个API,其脱胎于DHTML. DOM可以将任意HTML和XML文档描绘成一个由多层节点构成的结构. 每一个文档包含一个根节点-文档节点, ...

  3. 数据采集服务提供商,ip提供商 里面有些不错的基础数据

    http://user.qzone.qq.com/1649677458 这家公司的爬虫应该挺牛的 !@#!#!~#¥¥¥@@http://www.site-digger.com/

  4. DevOps on Android: 加速 App 从代码到上线

    DevOps 是一个众所周知的开发方法,其主要目的是自动化软件交付.事实上,DevOps 的目标是不断的测试,代码质量,功能开发,更容易维护版本.因此,DevOps 的一个最终目标是为开发者进行快速, ...

  5. PHP 中的随机数——你觉得可靠么?

    本文主要分析以加密为目的的随机数生成问题.PHP 5 并未提供生成强加密随机数的简便机制,但是,PHP 7 引入了两个 CSPRNG 函数以解决该问题.系 OneAPM 工程师编译整理. 什么是 CS ...

  6. Highcharts Pie 饼图提示标签IE下重叠解决方法,及json数据绑定方法

    一.提示标签重叠解决方法: series: [{ startAngle:90,//添加这个属性,就可以解决 type: 'pie', name: '充值方式' }] 不知道为什么,上述方法不行了.第一 ...

  7. 【HDU 2255】奔小康赚大钱 (最佳二分匹配KM算法)

    奔小康赚大钱 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Subm ...

  8. CF_225B _Well-known Numbers

    Numbers k-bonacci (k is integer, k > 1) are a generalization of Fibonacci numbers and are determi ...

  9. [wikioi]线段覆盖 2

    http://wikioi.com/problem/3027/ # 有个小错误调了半天,最终发现sort(line, line+N)错了,后面那个是exclusive的,所以要line+N+1.# 按 ...

  10. 控制台程序使用MFC类的方法

    (unresolved external symbol __endthreadex解决办法) 1.新建控制台程序: 2.添加源代码如下: #include <afx.h> #include ...