集合之三

LinkedList
LinkedList是采用双向循环链表实现的。
利用LinkedList实现栈(stack)、队列(queue)、双向队列(double-ended queue )。
数据结构
一般将数据结构分为两大类:线性数据结构和非线性数据结构。线性数据结构有线性表、栈、队列、串、数组和文件;非线性数据结构有树和图。
线性表
线性表的逻辑结构是n个数据元素的有限序列:
  (a1, a2 ,a3,…an)
n为线性表的长度(n≥0),n=0的表称为空表。
数据元素呈线性关系。必存在唯一的称为“第一个”的数据元素;必存在唯一的称为“最后一个”的数据元素;除第一个元素外,每个元素都有且只有一个前驱元素; 除最后一个元素外,每个元素都有且只有一个后继元素。
所有数据元素在同一个线性表中必须是相同的数据类型。
线性表按其存储结构可分为顺序表和链表。用顺序存储结构存储的线性表称为顺序表;用链式存储结构存储的线性表称为链表。
将线性表中的数据元素依次存放在某个存储区域中,所形成的表称为顺序表。一维数组就是用顺序方式存储的线性表。

栈(Stack)也是一种特殊的线性表,是一种后进先出(LIFO)的结构。
栈是限定仅在表尾进行插入和删除运算的线性表,表尾称为栈顶(top),表头称为栈底(bottom)。
栈的物理存储可以用顺序存储结构,也可以用链式存储结构。

 

import  java.util. * ;
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(
"one");
        ms.push(
"two");
        ms.push(
"three");
        
        System.out.println(ms.pop());
        System.out.println(ms.peek());
        System.out.println(ms.pop());
        System.out.println(ms.empty());
    }

}


队列
队列(Queue)是限定所有的插入只能在表的一端进行,而所有的删除都在表的另一端进行的线性表。
表中允许插入的一端称为队尾(Rear),允许删除的一端称为队头(Front)。
队列的操作是按先进先出(FIFO)的原则进行的。
队列的物理存储可以用顺序存储结构,也可以用链式存储结构。

import  java.util. * ;
class  MyQueue
{
    
private LinkedList ll=new LinkedList();
    
public void put(Object o)
    
{
        ll.addLast(o);
    }

    
public Object get()
    
{
        
return ll.removeFirst();
    }

    
public boolean empty()
    
{
        
return ll.isEmpty();
    }

    
public static void main(String[] args)
    
{
        MyQueue mq
=new MyQueue();
        mq.put(
"one");
        mq.put(
"two");
        mq.put(
"three");
        
        System.out.println(mq.get());
        System.out.println(mq.get());
        System.out.println(mq.get());
        System.out.println(mq.empty());
    }

}


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值