zoukankan      html  css  js  c++  java
  • 第十章:基本数据结构(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);
    	}
    }
    

      

      

  • 相关阅读:
    k8s安装
    jinja +grains 取变量
    项目跨域问题
    Node.js做Web后端优势为什么这么大?
    Chrome使用技巧
    看完这篇操作系统吊打面试官
    几款国产操作系统的区别
    如果红军是一家公司,依然是最后的大赢家
    RPA AI .NET Core 与未来--学习笔记
    Oracle中MERGE INTO用法解析
  • 原文地址:https://www.cnblogs.com/lsf90/p/3143726.html
Copyright © 2011-2022 走看看