算法1.2下压堆栈(链表表示)(algs4)

来源:互联网 发布:淘宝闲鱼怎么搜索 编辑:程序博客网 时间:2024/04/28 05:25

算法1.2下压堆栈(链表表示)API

public class Stack<Item> implements Iterable<Item>

private Node first                      栈顶(最近添加的元素)

private int N                            元素数量

 

public class Node                   定义了节点的嵌套类        

Item item                               节点的值

Node next                              下一个节点的引用

 

 

 

 

 

 

 

private class ListIterator implements Iterator<Item>             迭代器          

private Node current

@Override

                   public boolean hasNext()

@Override

                   public Item next()



public boolean isEmpty()

public int size()

public void push(Item item)                       头插法,入栈

public Item pop()                                      删除首节点,出栈                                  

@Override

         public Iterator<Item> iterator()        返回一个迭代器

 


























                                                            头插法,入栈

                               

                                        删除首节点,出栈(出队)

                        


package _1_3linkedList;import java.util.Iterator;/*算法1.2下压堆栈(链表表示)*/public class Stack<Item> implements Iterable<Item>{private Node first;/*the top of the stack,recently added elements*/private int N;/*Number of elements*/public class Node       /*定义了节点的嵌套类*/{Item item;Node next;}public boolean isEmpty(){return N==0;    /*or first==null*/}public int size(){return N;}public void push(Item item){                                 /*头插法,入栈*/Node oldfirst=first;first=new Node();first.item=item;first.next=oldfirst;N++;}public Item pop(){                                 /*删除首节点,出栈*/Item item=first.item;first=first.next;N--;return item;}@Overridepublic Iterator<Item> iterator(){return  new ListIterator();}private class ListIterator implements Iterator<Item>         /*迭代器*/{private Node current=first;@Overridepublic boolean hasNext(){return current!=null;}@Overridepublic Item next(){Item item=current.item;current=current.next;return item;}}}

测试用例:

package _1_3linkedList;import java.util.Scanner;/*算法1.2下压堆栈(链表表示)-测试用例*/public class TestStack{public static void main(String[] args){Stack<String> stack=new Stack<String>();Scanner sc=new Scanner(System.in);while(true){String s=sc.nextLine();if(s.equals("eof"))break;if(!s.equals("-"))stack.push(s);else if(!stack.isEmpty())System.out.println(stack.pop());}for(String s:stack)System.out.println(s);sc.close();}}

输入:

12345-5-46eof6321






原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 一年级的孩子数学总粗心怎么办 天生手脚笨的人怎么办 高三的孩子厌学怎么办 二年级小孩学习笨怎么办 孩子高二不想上怎么办 高三孩子玩手机怎么办 孩子考试粗心丢题怎么办 工作中总出错是怎么办 工作上做错事了怎么办 惹她不开心了怎么办 惹到别人不开心怎么办 孩子高三不愿意写作业怎么办? 小孩特别懒不爱学习怎么办 小孩上三年级不爱学习怎么办 一年级孩子做题粗心怎么办 一年级的孩子做题粗心怎么办 一年级娃娃做题粗心怎么办 有同学抄作业该怎么办 同学要抄我作业怎么办 同桌抄我作业我该怎么办 孩子想换同桌老师不同意怎么办 尴尬的事情心里难受怎么办 孩子撒谎不完成作业怎么办 孩子撒谎不交作业怎么办 孩子不爱写作业撒谎怎么办 大便又粗又硬怎么办 二年级末考紧张怎么办 孩子粗心做数学题老出错怎么办 生地会考考了140怎么办 数学成绩考砸了怎么办? 考砸了家长发火怎么办 大型考试考砸了怎么办 能力考试考砸了怎么办 考砸了老师批评怎么办 英语抽测考砸了老师怎么办? 辅导班学生考砸了老师怎么办 好学生考砸了怎么办? 孩子学习不认真马虎怎么办 孩子做作业不认真马虎怎么办 一年级小孩学习不认真怎么办 孩子做题审题不认真怎么办