您的位置:程序门 -> java -> j2se / 基础类



java学习应该掌握的基础:java中linkedlist 集合类实现栈和队列


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java学习应该掌握的基础:java中linkedlist 集合类实现栈和队列[已结贴,结贴人:yanglilibaobao]
发表于:2007-03-07 13:11:10 楼主
栈和队列是两种特殊的线性表,它们的逻辑结构和线性表相同,只是其运算规则较线性表有更多的限制,故又称它们为运算受限的线性表。

      linkedlist数据结构是一种双向的链式结构,每一个对象除了数据本身外,还有两个引用,分别指向前一个元素和后一个元素,和数组的顺序存储结构(如:arraylist)相比,插入和删除比较方便,但速度会慢一些。

栈的定义
         栈(stack)是限制仅在表的一端进行插入和删除运算的线性表。
  (1)通常称插入、删除的这一端为栈顶(top),另一端称为栈底(bottom)。
  (2)当表中没有元素时称为空栈。
  (3)栈为后进先出(last   in   first   out)的线性表,简称为lifo表。
         栈的修改是按后进先出的原则进行。每次删除(退栈)的总是当前栈中 "最新 "的元素,即最后插入(进栈)的元素,而最先插入的是被放在栈的底部,要到最后才能删除。

实现代码:
package   com.gc.list;
import   java.util.*;
public   class   mystack   {

  private   linkedlist   ll=new   linkedlist();
 
  public   void   push(object   o){
    ll.addfirst(o);
  }
  public   object   pop(){
    return   ll.removefirst();
  }
 
  public   object   peek(){
    return   ll.getfirst();
  }
 
  public   boolean   empty(){
    return   ll.isempty();
  }
 
  public   static   void   main(string[]   args){
    mystack   ms=new   mystack();
    ms.push( "zhangsan ");
    ms.push( "lisi ");
    ms.push( "wangwu ");
   
    system.out.println(ms.pop());
    system.out.println(ms.peek());
    system.out.println(ms.pop());
    system.out.println(ms.empty());
  }
}


队列定义
         队列(queue)是只允许在一端进行插入,而在另一端进行删除的运算受限的线性表

  (1)允许删除的一端称为队头(front)。
  (2)允许插入的一端称为队尾(rear)。
  (3)当队列中没有元素时称为空队列。
  (4)队列亦称作先进先出(first   in   first   out)的线性表,简称为fifo表。

实现代码:
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();
  }
 
  public   static   void   main(string[]   args){
    myqueue   mq=new   myqueue();
    mq.put( "zhangsan ");
    mq.put( "lisi ");
    mq.put( "wangwu ");
   
    system.out.println(mq.get());
    system.out.println(mq.get());
    system.out.println(mq.get());
    system.out.println(mq.empty());
   
  }
}


转http://java.chinaitlab.com/base/714801.html
发表于:2007-03-07 13:17:461楼 得分:20
虽然是基础   但是很重要

接分了
发表于:2007-03-07 13:23:342楼 得分:20
这太重要了,也太简单了。
发表于:2007-03-07 13:24:513楼 得分:0
实现栈和队列为什么不用范型类呢?

而且,java雷库中好像已经提供了stack了吧。
发表于:2007-03-07 13:57:034楼 得分:20
stack是同步的,有时候没必要浪费开销。
发表于:2007-03-07 14:08:595楼 得分:20
接粉
发表于:2007-03-07 14:40:416楼 得分:20
用linkedlist实现栈很不错,直接用stack是存在许多漏洞
发表于:2007-03-07 14:48:467楼 得分:0
很好。我随便接一下分哦。
发表于:2007-03-07 15:25:238楼 得分:0
不错,学习了
发表于:2007-03-07 15:30:399楼 得分:0
用arraylist实现也可以.
发表于:2007-03-07 16:54:1210楼 得分:0
34783138java技术群,欢迎加入
发表于:2007-03-07 16:56:1211楼 得分:0
高深的学问
发表于:2007-03-08 14:11:3512楼 得分:0
俺得多看看java类库了...
发表于:2007-03-08 15:45:5313楼 得分:0
确实不错   不过不知道java类库中的栈和队列有什么不好的?   可以解释下吗?
发表于:2007-03-08 16:39:3014楼 得分:0
基础很重要
发表于:2007-03-08 16:49:4015楼 得分:0
学习一下```
发表于:2007-03-08 19:25:1716楼 得分:0
mark
发表于:2007-03-08 19:57:2617楼 得分:0
实用...
发表于:2007-03-08 20:19:0218楼 得分:0
up
发表于:2007-03-08 21:13:0019楼 得分:0
learnning
发表于:2007-03-08 23:14:0920楼 得分:0
有库函数还是用库的     呵呵


快速检索

最新资讯
热门点击