• 顺序队列的基本操作


    #include <stdio.h>
    #include <stdlib.h>
    //#include <iostream>
    #define MAXSIZE 100
    #define OK 1
    #define TRUE 1
    #define FALSE 0
    #define ERROR 0
    
    //using namespace std;
    
    typedef struct
    {
        int data[MAXSIZE];
        int front;      // 头指针
        int rear;       //尾指针
    }SqQueue;
    
    int initQueue(SqQueue &Q);//初始化队列
    int ClearQueue(SqQueue &Q);//清空队列
    int QueueEmpty(SqQueue Q);//判断队空
    int QueueLength(SqQueue Q);//取队列长度
    int GetheadQueue(SqQueue Q,int &e);//取队列对头元素
    int InQueue(SqQueue &Q,int x);//入队操作
    int DeQueue(SqQueue &Q);//出队操作
    int QueueTraverse(SqQueue Q);//遍历队列
    
    
    int main()
    {
        printf("Hello World!
    ");
    
        SqQueue Q;
        int m;
        int i,leng;
        int kk,flag;
        initQueue(Q);
        printf("入队顺序:
    ");
        for(i=1;i<=10;i++)
        {
            InQueue(Q,i);//入队
            printf("%d ",i);
        }
        printf("
    ");
        flag=QueueEmpty(Q);
        leng=QueueLength(Q);
        if(flag==1)
            printf("队列空,队列长度为: 0
    ");
        else
            printf("队列不空,队列长度为:%d
    ",leng);
    
        QueueTraverse(Q);//遍历队列
    
        flag=QueueEmpty(Q);
        leng=QueueLength(Q);
        if(flag==1)
            printf("队列空,队列长度为: 0
    ");
        else
            printf("队列不空,队列长度为:%d
    ",leng);
    
        GetheadQueue(Q,m);
        printf("队列顶部元素为:%d
    ",m);
    
        for(i=0;i<10;i++)
        {
            kk=DeQueue(Q);
            printf("%d ",kk);//出队
        }
    
        ClearQueue(Q);
        printf("
    ");
        flag=QueueEmpty(Q);
        leng=QueueLength(Q);
        if(flag==1)
            printf("队列空,队列长度为: 0
    ");
        else
            printf("队列不空,队列长度为:%d
    ",leng);
    
        return 0;
    }
    
    
    int initQueue(SqQueue &Q)//初始化队列
    {
        Q.front=0;
        Q.rear=0;
        return OK;
    }
    
    int ClearQueue(SqQueue &Q)//清空队列
    {
        Q.front=Q.rear=0;
        return OK;
    }
    
    int QueueEmpty(SqQueue Q)//判断队空
    {
        if(Q.front==Q.rear)
            return TRUE;
        else
            return FALSE;
    }
    
    int QueueLength(SqQueue Q)//取队列长度
    {
        return(Q.rear-Q.front+MAXSIZE)%MAXSIZE;
    }
    
    int GetheadQueue(SqQueue Q,int &e)//取队列对头元素
    {
        if(Q.front==Q.rear)
            return ERROR;
        e=Q.data[Q.front];
        return OK;
    }
    
    int InQueue(SqQueue &Q,int x)//入队操作
    {
        if(Q.front==MAXSIZE)
            printf("溢出!
    ");
        else
        {
            Q.data[Q.rear]=x;
            (Q.rear)++;
        }
        return 1;
    }
    
    int DeQueue(SqQueue &Q)//出队操作
    {
        int x;
        if(Q.front==Q.rear)
            printf("下溢出!
    ");
        else
        {
            x=Q.data[Q.front];
            (Q.front)++;    //front指针后移
        }
        return x;
    }
    
    int QueueTraverse(SqQueue Q)//遍历队列
    {
        int i;
        i=Q.front;
        while(i!=Q.rear)
        {
            printf("%d ",Q.data[i]);
            i=(i+1)%MAXSIZE;
        }
        printf("
    ");
        return OK;
    }
    

    请dalao不吝赐教。
  • 相关阅读:
    Next Permutation
    Generate Parentheses
    Unique Binary Search Trees II
    LDP LSP建立
    LDP标签分发和管理
    维护LDP会话
    LDP会话状态机
    LDP会话建立过程
    LDP发现机制
    LDP术语
  • 原文地址:https://www.cnblogs.com/liesun/p/7350342.html
Copyright © 2020-2023  润新知