1.9 java:堆栈,队列,枚举,链表
优质
小牛编辑
134浏览
2023-12-01
Stack类
栈:(水杯喝水,先进后出)
栈是一种数据结构,是只能在某一端插入和删除的特殊线性表。他按照先进后出的原则存储数据
Enumeration(枚举)
- hasMoreElements() 测试此枚举是否包含更多的元素
- 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();//删除最后一个节点,并返回这个节点中的对象
}
}