队列和栈
Posted wenbiquan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列和栈相关的知识,希望对你有一定的参考价值。
public class Test public static void main(String[] args) Student s1 = new Student(); s1.setSid(1); s1.setSname("张三"); Student s2 = new Student(); s2.setSid(2); s2.setSname("李四"); Student s3 = new Student(); s3.setSid(3); s3.setSname("李五"); /* SNode n = new SNode(); Link link = new Link(n); SNode n1 = new SNode(); n1.setData(s1); link.InQueue(n1);//入队 SNode n2 = new SNode(); n2.setData(s2); link.InQueue(n2); SNode n3 = new SNode(); n3.setData(s3); link.InQueue(n3); System.out.println(link.Empty()); //循环遍历 List<Student> list1 = link.Selete1(); for (Student stu : list1) System.out.println(stu.getSid()+" "+stu.getSname()); List<Student> list = new ArrayList<>(); //出队 while(!link.Empty()) SNode n9 = link.OutQueue(); list.add(n9.getData()); for (Student s : list) System.out.println(s.getSid()+" "+s.getSname()); */ SNode n = new SNode(); Link link = new Link(n); SNode n1 = new SNode(); n1.setData(s1); link.Push(n1);//入栈 SNode n2 = new SNode(); n2.setData(s2); link.Push(n2); SNode n3 = new SNode(); n3.setData(s3); link.Push(n3); System.out.println(link.Empty()); List<Student> list = new ArrayList<>(); while(!link.Empty()) SNode n9 = link.Pop();//出栈 list.add(n9.getData()); for (Student s : list) System.out.println(s.getSid()+" "+s.getSname()); class SNode private SNode next; private Student data; public SNode getNext() return next; public void setNext(SNode next) this.next = next; public Student getData() return data; public void setData(Student data) this.data = data; class Student private int sid ; private String sname; public int getSid() return sid; public void setSid(int sid) this.sid = sid; public String getSname() return sname; public void setSname(String sname) this.sname = sname; class Link private SNode head; /* *link构造方法,给变量赋初值 */ public Link(SNode snode) this.head = snode ; /* *判断堆栈是否为空 */ public boolean Empty() return this.head.getNext()==null; /* *堆栈添加对象 入栈 */ public void Push(SNode snode) if(!(this.head.getNext()==null)) snode.setNext(this.head.getNext()); this.head.setNext(snode); /* *堆栈 出栈 */ public SNode Pop() SNode snode = this.head.getNext(); this.head .setNext(this.head.getNext().getNext()); return snode; /* *队列 入队 */ public void InQueue(SNode snode) SNode p = this.head; while(p!=null) if(p.getNext()==null) p.setNext(snode); break; p= p.getNext(); /* *队列 出队 */ public SNode OutQueue() SNode snode = this.head.getNext(); this.head .setNext(this.head.getNext().getNext()); return snode; /* *遍历输出 */ public List<Student> Selete1() List<Student> list = new ArrayList<>(); SNode p = this.head.getNext(); while(p!=null) list.add(p.getData()); p= p.getNext(); return list;
以上是关于队列和栈的主要内容,如果未能解决你的问题,请参考以下文章