资讯详情

手搓java中常见集合的练习(二)——MyStack,MyQueue

📅 2026/10/26 1:27:11 | 华诺云谱 👁 阅读
手搓java中常见集合的练习(二)——MyStack,MyQueue
文章目录MyArrayStackMyLinkedStackMyArrayQueueMyLinkedQueueMyArrayStack顺序栈(未实现自动扩容可补充)public class MyArrayStackT{ private Object[] data; private int top; private int size; private int capacity; { capacity10; datanew Object[capacity]; top-1; size0; } public T pop(){ if(this.isEmpty()){ return null; } Object itemdata[top--]; size--; return (T) item; } public boolean push(T t){ if(this.isFull()){ return false; } data[top]t; size; return true; } public boolean isEmpty(){ return size0; } public boolean isFull(){ return sizecapacity; } }MyLinkedStack链式栈(用next指针维护节点之间的联系)public class MyLinkedStackT { private static class NodeT{ private T item; private NodeT next; Node(T item,NodeT next){ this.itemitem; this.nextnext; } } private NodeT top; private int size; private int capacity; { capacity10; topnull; size0; } public T pop(){ if(this.isEmpty()){ return null; } size--; T itemtop.item; toptop.next; return item; } public boolean push(T t){ if(this.isFull()){ return false; } NodeT newNodenew Node(t,top); topnewNode; size; return true; } public boolean isEmpty(){ return size0; } public boolean isFull(){ return sizecapacity; } }MyArrayQueue循环队列(first和last向同一个方向变化)public class MyArrayQueueT { private Object[] data; private int first; private int last; private int size; private int capacity; { last0; first0; size0; capacity10; datanew Object[10]; } public boolean enQueue(T t){ if(isFull()){ return false; } data[last]t; last(last1)%capacity; size; return true; } public T deQueue(){ if(isEmpty()){ return null; } Object tempdata[first]; first(first1)%capacity; size--; return (T)temp; } public boolean isFull(){ return sizecapacity; } public boolean isEmpty(){ return size0; } }MyLinkedQueue链式队列public class MyLinkedQueueT { private static class NodeT{ private NodeT next; private T item; Node(T item,NodeT next){ this.itemitem; this.nextnext; } } private NodeT first; private NodeT last; private int size; { firstnull; lastnull; size0; } public void enQueue(T t){ NodeT newNodenew Node(t,null); //如果队列为空 if(lastnull){ firstnewNode; lastnewNode; } else{ //如果队列不为空 last.nextnewNode; lastnewNode; } size; } public T deQueue(){ //如果队列为空 if(firstnull){ return null; } Object itemfirst.item; firstfirst.next; if(firstnull){ lastnull; } size--; return (T) item; } }
📝

华诺云谱内容团队

资深建站顾问 · 行业研究员

10年+企业数字化服务经验,专注智能建站、SEO优化与品牌营销,持续输出建站技巧、行业洞察与营销干货,已帮助5000+企业实现数字化增长。

你可能需要的服务

订阅华诺云谱资讯周报

每周一封,精选建站技巧、SEO与营销干货,直达邮箱。已有 8,000+ 企业主订阅,助你少走弯路。

↑