曲径通幽论坛

标题: 用数组创建队列 [打印本页]

作者: beyes    时间: 2009-11-8 00:07
标题: 用数组创建队列
代码
#include <stdio.h>

#define MAXQUEUE    10    /*队列最大容量*/

int    queue [MAXQUEUE];    /*队列数组*/
int    front = -1;        /*队列的队头*/
int    rear = -1;        /*队列的队尾*/

/*数据的存入*/
int enqueue (int value)
{
    if (rear >= MAXQUEUE)    /*检查队列是否全满*/
        return (-1);    /*已满*/

    rear++;            /*队尾指针前移*/
    queue [rear] = value;
}

/*取出队列数据*/
int dequeue()
{
    if (front == rear)    /*检查队列是否为空*/
        return (-1);
    front++;
   
    return (queue [front]);
}

void main()
{
    int input [100];
    int output [100];
    int select;
    int i_count = 0;
    int o_count = 0;
    int loop = 1;
    int i, temp;

    while (loop) {
        /*选项内容*/
        printf ("[1]输入 [2]取出 [3]列出全部内容 ==> ");
        scanf ("%d", &select);
   
        switch (select) {
            case 1:
                printf ("请输入存入队列的值(%d) ==> ", i_count + 1);
                scanf ("%d", &temp);
                if (enqueue(temp) == -1)
                    printf ("队列全满.\n");
                else
                    input [i_count++] = temp;
                break;

            case 2:
                if ((temp = dequeue()) == -1)
                    printf ("队列是空的.\n");
                else {
                    printf ("取出队列元素: %d\n", temp);
                    output [o_count++] = temp;
                }
                break;

            case 3:
                loop = 0;
                break;
       
            }
    }

    printf ("输入队列的元素: ");
    for (i = 0; i < i_count; i++)
        printf ("[%d]", input[i]);

    printf ("\n取出队列的元素: ");
    for (i = 0; i < o_count; i++)
        printf ("[%d]", output[i]);

    printf ("\n剩下队列的元素: ");
        while ((temp = dequeue()) != -1)
            printf ("[%d]", temp);

    printf ("\n");
}
运行输出
beyes@beyes-groad:~/programming/data_structure/Queue$ ./queue.exe
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(1) ==> 3
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(2) ==> 8
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(3) ==> 9
[1]输入 [2]取出 [3]列出全部内容 ==> 9
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(4) ==> 7
[1]输入 [2]取出 [3]列出全部内容 ==> 1
请输入存入队列的值(5) ==> 19
[1]输入 [2]取出 [3]列出全部内容 ==> 2
取出队列元素: 3
[1]输入 [2]取出 [3]列出全部内容 ==> 2
取出队列元素: 8
[1]输入 [2]取出 [3]列出全部内容 ==> 3
输入队列的元素: [3][8][9][7][19]
取出队列的元素: [3][8]
剩下队列的元素: [9][7][19]





欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2