前言
承接上节,我们介绍了如何使用单链表实现队列,那今天我们就来看看单链表如何实现栈
栈
1.先进后出
2.只能在栈顶进行插入删除
算法分析
代码实现
1.创建单链表结点类
public static class Node<V>{
public V value;
public Node<V> next;
public Node(V v){
value=v;
next=null;
}
}
2.创建栈类
public static class MyStack<V>{
private Node<V> head;
private int size;
public MyStack(){
head=null;
size=0;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
public void push(V value){
Node<V> cur=new Node<>(value);
if(head==null){
head=cur;
}else{
cur.next=head;
head=cur;
}
size++;
}
public V Pop(){
V ans=null;
if(head!=null){
ans=head.value;
head=head.next;
size--;
}
return ans;
}
}
3.测试
public static void main(String[] args) {
MyStack<Integer> myStack=new MyStack<Integer>();
myStack.push(1);
myStack.push(2);
myStack.push(3);
int ans1=myStack.Pop();
int ans2=myStack.Pop();
int ans3=myStack.Pop();
System.out.println(ans1);
System.out.println(ans2);
System.out.println(ans3);
}
4.全部代码
package List;
public class 用单链表实现队列和栈 {
public static class Node<V>{
public V value;
public Node<V> next;
public Node(V v){
value=v;
next=null;
}
}
public static class MyStack<V>{
private Node<V> head;
private int size;
public MyStack(){
head=null;
size=0;
}
public boolean isEmpty(){
return size==0;
}
public int size(){
return size;
}
public void push(V value){
Node<V> cur=new Node<>(value);
if(head==null){
head=cur;
}else{
cur.next=head;
head=cur;
}
size++;
}
public V Pop(){
V ans=null;
if(head!=null){
ans=head.value;
head=head.next;
size--;
}
return ans;
}
}
public static void main(String[] args) {
MyStack<Integer> myStack=new MyStack<Integer>();
myStack.push(1);
myStack.push(2);
myStack.push(3);
int ans1=myStack.Pop();
int ans2=myStack.Pop();
int ans3=myStack.Pop();
System.out.println(ans1);
System.out.println(ans2);
System.out.println(ans3);
}
}
好啦,今天的分享就结束了,是不是感觉收获满满呢,博主会持续更新很多的小知识点,喜欢的话就多多点赞关注哦!