1.9 java:堆栈,队列,枚举,链表

优质
小牛编辑
134浏览
2023-12-01

Stack类

栈:(水杯喝水,先进后出)

栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。他按照先进后出的原则存储数据

Enumeration(枚举)

  1. hasMoreElements() 测试此枚举是否包含更多的元素
  2. nextElements() 如果此枚举对象至少还有一个可提供的元素,则返回此枚举的下一个元素

代码演示:

package day07;
import java.util.Date;
import java.util.Enumeration;
import java.util.Stack;
/*****
 * 栈,堆,队列,链表演示
 * @author yw.wang
 *
 */
public class Test06 {
public static void main(String[] args) {
    Stack ss = new Stack();
    ss.push(1);
    ss.push('a');
    ss.push(12.3f);
    ss.push(145.6d);
    Date dd = new Date();
    ss.push(dd);
    //System.out.println(ss);
    //pop()方法表示移除栈顶部的对象,并作为函数的值返回该对象,所以每打印一次,元素少一个
    /*System.out.println(ss.pop());
    System.out.println(ss.pop());
    System.out.println(ss.pop());
    //peek:    查看 堆栈顶部的对象,但是不从堆栈中移除它
    System.out.println(ss.peek());
    //empty    :    测试堆栈是否为空,是空返回true
    System.out.println(ss.empty());
    */
    Enumeration item = ss.elements();//得到stack中的枚举对象
    while(item.hasMoreElements())//显示枚举中的所有元素
    {//遍历输出
        Object oo = item.nextElement();
        System.out.println(oo);
    }
}
}

队列

队列(Queue)简称队,他也是一种运算受限的线性表,其限制是仅仅允许在表的一端经行插入,而在表的另一端经行删除,我们把经行插入的一端当做队尾,经行删除的一端当做队首 向队列中插入新的元素称为进队或者入队,新元素进队后就称为新的队尾元素,元素离队后,其后继元素就成为队首元素

Queue类:

  • offer() 添加一个元素并返回true,如果队列已满,则返回false
  • poll() 移除并返回队列头部的元素,如果队列为空,则返回null
  • peek() 返回队列头部的元素,如果队列为空,则返回null

代码演示:

package day07;
import java.util.LinkedList;
import java.util.Queue;
/***
 *  队列演示
 * @author yw.wang
 *
 */
public class Test07 {
public static void main(String[] args) {
    Queue qq = new LinkedList();
    //offer:添加一个元素
    qq.offer(1);
    qq.offer(12.3d);
    qq.offer("abcd");
    //移除并查看第一个元素
    System.out.println(qq.poll());
    System.out.println(qq.poll());
    // 查看不移除第一个元素
    System.out.println(qq.peek());
    System.out.println(qq.peek());


}
}

链表

链表是一种物理存储单元上非连续,非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的,聊表由一系列节点组成,(链表中的每个元素称为节点),节点可以在运行时动态生成,每个节点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。相比线性表顺序结构,操作复杂。


代码演示:

package day07;
import java.util.LinkedList;
/******
 * 用linkedList演示链表
 * @author yw.wang
 *
 */
public class Test08 {
public static void main(String[] args) {
    LinkedList ll = new LinkedList();
    ll.add(1);
    ll.add('a');
    ll.add("niemii");
    ll.add("");
    ll.add(6);
    ll.add("fuck");
    System.out.println(ll);
    ll.add(1,"fuckyou ");
    System.out.println(ll);

    ll.addFirst("first");
    ll.addLast("sheet");
    System.out.println(ll);

    //删除链表中的所有节点,使当前链表成为空链表
    //ll.clear();
//    System.out.println(ll);

    //删除指定位置index上的节点
    ll.remove(1);
    System.out.println(ll);

    //删除首次出现含有数据o的结点
    ll.remove("fuck");
    System.out.println(ll);

    ll.removeFirst();//删除第一个节点,并返回这个节点中的对象
    ll.removeLast();//删除最后一个节点,并返回这个节点中的对象
}
}