集合之三

来源:互联网 发布:gta4不卡优化流畅补丁 编辑:程序博客网 时间:2024/04/30 03:19

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());
    }

}


 

原创粉丝点击