zoukankan      html  css  js  c++  java
  • 顺序队列的基本操作

    #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不吝赐教。
  • 相关阅读:
    android学习日记19--四大组件之BroadcastReciver(广播接收者)
    android学习日记19--四大组件之Services(服务)
    android学习日记18--Adapter简介
    android学习日记17--Gallery(画廊视图)
    android学习日记16--GridView(网格视图)
    android学习日记15--WebView(网络视图)
    android学习日记14--网络通信
    android报错及解决2--Sdcard进行文件的读写操作报的异常
    android学习日记13--数据存储之File存储
    自定义跨浏览器的事件处理程序
  • 原文地址:https://www.cnblogs.com/liesun/p/7350342.html
Copyright © 2011-2022 走看看