• 第十章:基本数据结构(0)


    10.1-6  说明如何用两个栈来实现一个队列,并分析有关队列操作的运行时间。

    Stack  A,B  //A用于插入,B用于删除

    ENQUEUE(Q,x)

    if top[A]==n

      then error "upflow"

      else  top[A]=top[A]+1

         A[top[A]] <- x

    DEQUEUE(Q,x)

    if STACK-EMPTY(B)

      if STACK-EMPTY(A)

         error "underflow"

       else  

        while top[A]!=0

          PUSH(B,POP(A))

         POP(B)

    else

      POP(B)

    #include <iostream>
    #include <string>
    #include "stack.h"
    
    using namespace std;
    
    #define    STACK_SIZE	20
    #define    QUEUE_SIZE	50
    
    struct Stack{
    	int count;
    	int list[STACK_SIZE];
    };
    
    struct Queue{
    	int head,tail;
    	int list[QUEUE_SIZE];
    };
    
    void push(Stack *s,int x){
    	if (s->count!=STACK_SIZE){
    		s->list[(s->count)++]=x;
    	}else{
    		cout<<"upflow"<<endl;
    	}
    }
    
    int pop(Stack *s){
    	if (s->	count!=0){
    		return s->list[--(s->count)];
    	}else{
    		cout<<"underflow"<<endl;
    		return NULL;
    	}
    }
    
    bool empty_stack(Stack *s){
    	return s->count==0? true:false;
    }
    
    void enqueue(Stack *s1,Stack *s2,int x){
    	if (s1->count==STACK_SIZE){
    		cout<<"upflow"<<endl;
    		return ;
    	}else{
    		push(s1,x);
    	}
    }
    
    int dequeue(Stack *s1,Stack *s2){
    	if (empty_stack(s2)){
    		while (s1->count!=0){
    			push(s2,pop(s1));
    		}
    		return pop(s2);
    	}else{
    		return pop(s2);
    	}
    }
    

      

      

  • 相关阅读:
    构建CMDB的一些启发
    一个NB的安全认证机制
    SQLAlchemy
    Tornado基本使用
    Tornado源码探寻(请求到来)
    Tornado源码探寻(准备阶段)
    Tornado源码探寻(开篇)
    我的个人博客网站
    IDEA/AS快捷键收集&习惯
    ubuntu命令收集
  • 原文地址:https://www.cnblogs.com/lsf90/p/3143726.html
Copyright © 2020-2023  润新知