zoukankan      html  css  js  c++  java
  • 数据结构作业——队列子系统

    #include<iostream>
    using namespace std;
    
    typedef int ElemType;
    
    typedef struct QueueNode{    //结点结构 
        ElemType data;
        QueueNode *next;
    }QNode,*PNode;
    
     
    typedef struct FirstNode{
        QueueNode *rear,*front;  //队列就是一个队头结点后面跟一个链表,
    }*LkQueue;                    // front是头指针,而不是首元素节点 
    
    LkQueue IntiQueue(){
        LkQueue Q;
        Q=new FirstNode;
        if(Q==NULL){
            return Q;   //空间分配失败返回NULL 
        }
        
        PNode N=new QNode;
        if(N==NULL){          
            return NULL;
        }
        
        N->next==NULL;
        Q->rear=N;      //头指针,尾指针指向同一个数据域为空结点 
        Q->front=N;        //这个空结点相当于是链表表头 
        
        return Q;      //返回队指针 
    }
    
    
    bool EnQueue(LkQueue Q,ElemType &x){
        if(Q==NULL){        //队列无效 
            return false;
        }
        
        PNode Cell;
        Cell=new QNode;      //为入队的数据分配空间 
        if(Cell==NULL){            //空间分配失败 
            return false;
        }
        
        Cell->data=x;     
        Cell->next=NULL;      //队尾入队 
        Q->rear->next=Cell;
        Q->rear=Cell;
        
        return true;
    }
    
    
     bool DeQueue(LkQueue Q,ElemType &x){
         if(Q==NULL||Q->front==Q->rear){        //队无效或空队 
             return false;
         }
         PNode temp=Q->front;  //temp是头指针 
         x=temp->next->data;  
         Q->front=temp->next;   //队头出队 
         delete temp;         //释放结点空间 
         
         return true; 
     }
     
     
     bool FrontQueue(LkQueue Q,ElemType &x){
         if(Q==NULL||Q->front==Q->rear){  //队无效或空队 
             return false;
         }
         
         x=Q->front->next->data;  //访问首元素 
         
        return true; 
     }
     
     
     bool PrintQueue(LkQueue Q){
         if(Q==NULL||Q->front==Q->rear){   //队无效或空队 
             return false;
         }
         
         ElemType x;
         PNode index=Q->front;    //index是头指针的副本,改变的是副本,原队列不改变 
         while(index!=Q->rear){     
             x=index->next->data;
             cout<<x<<" ";            
             index=index->next;  //遍历队列 
         }
         
         return true;
     }
     
     //菜单函数 
     void Meue(){    
      
         cout<<"             队列子系统"<<endl;
         cout<<"----------------------------------------"<<endl;
        cout<<"|           1-初始化队列               |"<<endl;
        cout<<"|           2-入队操作                 |"<<endl;
        cout<<"|           3-出队操作                 |"<<endl;
        cout<<"|           4-求队头元素               |"<<endl;
        cout<<"|           5-显示队中所有的元素       |"<<endl;
        cout<<"|           0-返回                     |"<<endl;
        cout<<"----------------------------------------"<<endl;
        cout<<" 请输入菜单号:"; 
     }
     
    int main(){
        
        Meue();
        LkQueue Q;
        ElemType x;  //x为操作元素 
        int m;       //m为菜单号
        cin>>m;
        while(m){
            
            switch(m){
                case 1:Q=IntiQueue();cout<<"完成初始化。"<<endl<<endl;break;
                case 2:cout<<"请输入待插入元素:";
                        cin>>x;
                        EnQueue(Q,x);
                        cout<<"插入完成"<<endl<<endl;
                        break;
                case 3:if(DeQueue(Q,x)){
                            cout<<"队空,无法操作。"<<endl<<endl;
                        }
                        else{
                            cout<<"元素"<<x<<"已出队。"<<endl<<endl;
                            
                        }
                        break;
                case 4:if(!FrontQueue(Q,x)){
                            cout<<"队空,无法操作。"<<endl<<endl;
                        }
                        else{
                        
                        cout<<"队头元素为:"<<x<<endl<<endl;
                        }
                        break;
                case 5:cout<<"队中所有的元素:";
                        PrintQueue(Q);
                        cout<<endl<<endl;break;
                        default:break; 
            }
            
            Meue();
            cin>>m;
        
        } 
        
    
        
        return 0;
    } 
  • 相关阅读:
    写文件
    CI使用数据库
    ajxa方法
    find---查找文件或目录
    diff---比较文件不同
    ifup&&ifdown --- 激活/关闭指定的网络接口。
    ifconfig---配置和显示Linux内核中网络接口
    ssh-agent && 及 ssh-add介绍
    host---域名查询
    tracepath---追踪并显示报文到达目的主机所经过的路由信息。
  • 原文地址:https://www.cnblogs.com/WP-WangPin/p/12741947.html
Copyright © 2011-2022 走看看