今天介绍两个基础的数据结构,链表和栈
在介绍栈之前需要先说说链表:
链表以节点为单位,每个元素都是一个独立对象,在内存空间的存储是非连续的。链表的节点对象具有两个成员变量:「值 val
」,「后继节点引用 next
」 。
class ListNode{
int val;//一个节点值
ListNode next;//后节点
ListNode(int x){val=x;}
}
因为每一个节点都是实例化的,我们可以这样写:
ListNode n1 = new ListNode(3);
ListNode n2 = new ListNode(6);
ListNode n3 = new ListNode(9);
n1.next=n2;//把n1传给n2
接下来说说什么是栈:
栈是一钟先进后出的抽象数据结构,可以由数组或者链表组成:
Stack<Integer> stack = new Stack<>();
//入栈
stack.push(1);
stack.push(2);
//出栈
stack.pop();//元素2出栈
stack.pop();//元素1出栈
注意,通常情况下,不推荐使用java中Vector以及它的子类stack作为栈来使用,而是使用LinkedList作为栈来使用
LinkedList<Integer> stack = new LinkedList<>();
stack.addLast(1);
stack.addLast(2);
stack.removeLast();//元素2出栈
stack.removeLast();//元素1出栈