[转帖]Java实现数据结构栈stack和队列Queue_Android, Python及开发编程讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  Android, Python及开发编程讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3480 | 回复: 0   主题: [转帖]Java实现数据结构栈stack和队列Queue        下一篇 
shixisheng
注册用户
等级:上尉
经验:646
发帖:52
精华:0
注册:2013-5-27
状态:离线
发送短消息息给shixisheng 加好友    发送短消息息给shixisheng 发消息
发表于: IP:您无权察看 2013-6-3 14:33:51 | [全部帖] [楼主帖] 楼主

回顾JDK提供的集合类   容器(集合)框架如下:

  集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身。

  集合类型主要有3种:set(集)、list(列表)和map(映射)。

  Collection接口

  ├List 接口

  │├LinkedList 链表

  │├ArrayList 顺序结构动态数组类

  │└Vector 向量

  │ └Stack 栈

  Map接口

 ├Hashtable

├HashMap

  └Set接口

 Collection<--Set<--HashSet

Collection<--Set<--HashSet<--LinkedHashSet

Collection<--Set<--SortedSet(也是接口)<--TreeSet

  LinkedList, 查阅JDK

  List接口的链表列表实现。实现所有可选的列表操作,并且允许所有元素(包null)

  LinkedList类还为在列表的开头及结尾get,remove和insert元素提供了统一的命名方法。这些操作允许将链接列表用作堆栈,队列或双端队列

  注意此实现不是同步的

  JDK本身提供的Stack类

  提供了通常的push和pop操作,以及取堆栈顶点的peek方法,测试堆栈是否为空的empty方法,在堆栈中查找项并确定离栈顶的距离,共五个方法。

  JDK中实现这个类本身继承自Vector这个类(since JDK1.0)

  数据结构中 栈的定义及基本运算

  栈和队列都属于线性结构,是两种在运算上受到某些限制的特殊线性表,他们比一般线性表更简单。

  栈(stack)是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端,称为栈顶(top),另一端为固定的一端,称为栈底

  栈顶,栈底,空栈,栈的特性,

  退栈,进栈

  栈的运算:

  初始化栈,进栈push,出栈pop,,取栈顶元素(即是查看下一个要出栈的元素,也叫peek),判断空

  用LinkedList实现stack

  其实主要是实现 进栈push,出栈pop,,取栈顶元素这几个方法

 package org.simoncook.examtest;

import java.util.LinkedList;

public class MyStack {

    private LinkedList ll = new LinkedList();

    public void push(Object obj){

    //将指定元素插入此列表的开头。

    ll.addFirst(obj);

    }

    public Object pop(){

    //移除并返回此列表的第一个元素.

    return ll.removeFirst();

    }

    public Object peek(){

    // 返回此列表的第一个元素。

    return ll.getFirst();

    }

    public boolean empty(){

    return ll.isEmpty();

    }

}

  数据结构队列

  队列(Queue)的定义

  队列的特性队列的实例队 列的基本运算

  (1) 入队操作:InQueue(q,x)

  (2)出队操作:OutQueue(q,x)

  (3)读队头元 素:ReadFront(q,x)

  (4)显示队列中元素ShowQueue(q)

  (5)判队空操作:QEmpty(q)

  (6)判 队满操作:QFull(q)

  (7)求队列长度Qlen(q)

  实现代码:

 package com.gc.list;

import java.util.*;

public class MyQueue {

    private LinkedList ll=new LinkedList();

    //入队操作

    public void put(Object o){

    ll.addLast(o);

    }

    //使用removeFirst()方法,返回队列中第一个数据,然后将它从队列 中删除

    //出队操作

    public Object get(){

    return ll.removeFirst();

    }

    public boolean empty(){

    return ll.isEmpty();

    }




赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论