java 数据结构中栈和队列的实例详解
程序员文章站
2024-02-27 22:25:21
java 数据结构中栈和队列的实例详解
栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入和删除操作收到更多的约束和限...
java 数据结构中栈和队列的实例详解
栈和队列是两种重要的线性数据结构,都是在一个特定的范围的存储单元中的存储数据。与线性表相比,它们的插入和删除操作收到更多的约束和限定,又被称为限定性的线性表结构。栈是先进后出filo,队列是先进先出fifo,但是有的数据结构按照一定的条件排队数据的队列,这时候的队列属于特殊队列,不一定按照上面的原则。
实现栈:采用数组和链表两种方法来实现栈
链表方法:
package com.cl.content01; /* * 使用链表来实现栈 */ public class stack<e> { node<e> top=null; public boolean isempty(){ return top==null; } /* * 出栈 */ public void push(e data){ node<e> nextnode=new node<e>(data); nextnode.next=top; top=nextnode; } /* * 出栈 */ public e pop(){ if(this.isempty()){ return null; } e data =top.datas; top=top.next; return data; } } /* * 链表 */ class node<e>{ node<e> next=null; e datas; public node(e datas){ this.datas=datas; } }
实现队列:同栈一样
链表方法:
package com.cl.content01; public class myqueue<e> { private node<e> head=null; private node<e> tail=null; public boolean isempty(){ return head==null; } public void put(e data){ node<e> newnode=new node<e>(data); if(head==null&&tail==null) head=tail=newnode; else tail.next=newnode; tail=newnode; } public e pop(){ if(this.isempty()) return null; e data=head.data; head=head.next; return data; } public int size(){ int n=0; node<e> t=head; while(t!=null){ n++; t=t.next; } return n; } public static void main(string[] args) { myqueue<integer> q=new myqueue<integer>(); q.put(1);q.put(3);q.put(2); system.out.println(q.pop()); system.out.println(q.size()); system.out.println(q.pop()); } } class node<e>{ node<e> next=null; e data; public node(e data){ this.data=data; } }
如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望通过本能帮助到大家,谢谢大家对本站的支持!