栈,队列 以及 stack, queue 的相互实现 .

    1. //Stack的实现:
    2. public class Stack {
    3.   private int maxSize;
    4.   private long[] stack;
    5.   private int top;
    6.   
    7.   public Stack(int s){
    8.     maxSize=s;
    9.     stack= new long[maxSize];
    10.     top=-1;
    11.   }
    12.   
    13.   public void push(long j){
    14.     stack[++top]=j;
    15.   }
    16.   
    17.   public long pop(){
    18.     return stack[top--];
    19.   }
    20.   
    21.   public long peek(){
    22.     return stack[top];
    23.   }
    24.   
    25.   public boolean isEmpty(){
    26.     return (top==-1);
    27.   }
    28.   
    29.   public boolean isFull(){
    30.     return (top==(maxSize-1));
    31.   }
    32. }

    1. //Queue的实现
    2. public class Queue {
    3.   private int maxSize;
    4.   private int nItems;
    5.   private int front;
    6.   private int rear;
    7.   private long[] queue;
    8.   
    9.   public Queue(int s){
    10.     maxSize=s;
    11.     queue=new long[maxSize];
    12.     front=0;
    13.     rear=-1;
    14.     nItems=0;  
    15.   }
    16.   
    17.   public void insert(long j){
    18.     if(rear==maxSize-1){
    19.       rear=-1;
    20.     }
    21.     queue[rear++]=j;
    22.     nItems++;
    23.   }
    24.   
    25.   public long remove(){
    26.     long temp=queue[front++];
    27.     if(front==maxSize){
    28.       front=0;
    29.     }
    30.     nItems--;
    31.     return temp;
    32.   }  
    33.   
    34.   public long peekFront(){
    35.     return queue[front];
    36.   }
    37.   
    38.   public boolean isEmpty(){
    39.     return (nItems==0);
    40.   }
    41.   
    42.   public boolean isFull(){
    43.     return (nItems==maxSize);
    44.   }
    45.   
    46.   public int size(){
    47.     return nItems;
    48.   }
    49. }

  1. Java代码   收藏代码
    1. import java.util.ArrayList;  
    2. import java.util.List;  
    3. import java.util.Stack;  
    4.   
    5.     /* 
    6.      * Q 57 用两个栈实现队列 
    7.      */  
    8.   
    9. public class QueueImplementByTwoStacks {  
    10.   
    11.     private Stack<Integer> stack1;  
    12.     private Stack<Integer> stack2;  
    13.       
    14.     QueueImplementByTwoStacks(){  
    15.         stack1=new Stack<Integer>();  
    16.         stack2=new Stack<Integer>();  
    17.     }  
    18.       
    19.     public Integer poll(){  
    20.         Integer re=null;  
    21.         if(!stack2.empty()){  
    22.             re=stack2.pop();  
    23.         }else{  
    24.             while(!stack1.empty()){//move to stack2 to make stack1 have only one element.Then pop this element.  
    25.                 re=stack1.pop();  
    26.                 stack2.push(re);  
    27.             }  
    28.             if(!stack2.empty()){  
    29.                 re=stack2.pop();  
    30.             }  
    31.         }  
    32.         return re;  
    33.     }  
    34.     public Integer offer(int o){  
    35.         stack1.push(o);  
    36.         return o;  
    37.     }  
    38.       
    39.     public static void main(String[] args) {  
    40.         QueueImplementByTwoStacks queue=new QueueImplementByTwoStacks();  
    41.         List<Integer> re=new ArrayList<Integer>();  
    42.         queue.offer(1);  
    43.         queue.offer(2);  
    44.         queue.offer(3);  
    45.         re.add(queue.poll());  
    46.         queue.offer(4);  
    47.         re.add(queue.poll());  
    48.         queue.offer(5);  
    49.         re.add(queue.poll());  
    50.         re.add(queue.poll());  
    51.         re.add(queue.poll());  
    52.         System.out.println(re.toString());  
    53.     }  
    54.   
    55. }  


    Java代码   收藏代码
    1. import java.util.LinkedList;  
    2.   
    3.     /* 
    4.      * Q 57 用两个队列实现一个栈 
    5.      */  
    6. public class StackImplementByTwoQueues {  
    7.   
    8.     //use 'queue1' and 'queue2' as a queue.That means only use the method 'addLast' and 'removeFirst'.  
    9.     private LinkedList<Integer> queue1;  
    10.     private LinkedList<Integer> queue2;  
    11.       
    12.     StackImplementByTwoQueues(){  
    13.         queue1=new LinkedList<Integer>();  
    14.         queue2=new LinkedList<Integer>();  
    15.     }  
    16.       
    17.     public Integer pop(){  
    18.         Integer re=null;  
    19.         if(queue1.size()==0&&queue2.size()==0){  
    20.             return null;  
    21.         }  
    22.         if(queue2.size()==0){  
    23.             while(queue1.size()>0){  
    24.                 re=queue1.removeFirst();  
    25.                 if(queue1.size()!=0){//do not add the last element of queue1 to queue2  
    26.                     queue2.addLast(re);  
    27.                 }  
    28.             }  
    29.         }else if (queue1.size()==0){  
    30.             while(queue2.size()>0){  
    31.                 re=queue2.removeFirst();  
    32.                 if(queue2.size()!=0){//do not add the last element of queue2 to queue1  
    33.                     queue1.addLast(re);  
    34.                 }  
    35.             }  
    36.         }  
    37.         return re;  
    38.     }  
    39.     public Integer push(Integer o){  
    40.         if(queue1.size()==0&&queue2.size()==0){  
    41.             queue1.addLast(o);//queue2.addLast(o); is also ok  
    42.         }  
    43.         if(queue1.size()!=0){  
    44.             queue1.addLast(o);  
    45.         }else if(queue2.size()!=0){  
    46.             queue2.addLast(o);  
    47.         }  
    48.         return o;  
    49.     }  
    50.       
    51.     public static void main(String[] args) {  
    52.         StackImplementByTwoQueues stack=new StackImplementByTwoQueues();  
    53.         int tmp=0;  
    54.         stack.push(1);  
    55.         stack.push(2);  
    56.         stack.push(3);  
    57.         tmp=stack.pop();  
    58.         System.out.println(tmp);//3  
    59.         stack.push(4);  
    60.         tmp=stack.pop();  
    61.         System.out.println(tmp);//4  
    62.         tmp=stack.pop();  
    63.         System.out.println(tmp);//2  
    64.         stack.push(5);  
    65.         stack.push(6);  
    66.         tmp=stack.pop();  
    67.         System.out.println(tmp);//6  
    68.         tmp=stack.pop();  
    69.         System.out.println(tmp);//5  
    70.         tmp=stack.pop();  
    71.         System.out.println(tmp);//1  
    72.     }  
    73. }  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值