链式的队列的创建、插入、删除、遍历、取队首元素

来源:互联网 发布:安畅网络水军平台 编辑:程序博客网 时间:2024/04/30 11:04

链式的队列的创建、插入、删除、遍历、取队首元素上午操作。
我们今天将的方式是比较简单的方式,没有动态的分配空间。

#include <stdio.h>typedef struct{    int queue[100];    int front;    int rear;} sqqueue;//创建一个空的队列int initqueue(sqqueue *sq){    if(sq!=NULL)    {        sq->front=sq->rear=0;        return 1;    }    return 0;} //入队(把新元素加到队尾) int enqueue(sqqueue *sq,int d) {    //    if(sq==NULL)    {        printf("队列未创建,入队失败!\n");        return 0;    }    if(sq->rear>=100)    {        printf("队列已满,入队失败!\n");        return 0;    }    else    {        sq->queue[sq->rear]=d;        sq->rear=sq->rear+1;        printf("入栈的元素是%d\n",d);        return 1;    }}int outqueue(sqqueue *sq,int d) {    if(sq==NULL)    {        printf("队列未创建,出队失败!\n");        return 0;    }    if(sq->front==sq->rear)    {        printf("队列为空,出队失败!\n");        return 0;    }     else    {        d=sq->queue[sq->front];        sq->front++;        printf("出栈的元素是%d\n",d);        return 1;    }   }int traverseQueue(sqqueue *sq) {    int d;    if(sq==NULL)    {        printf("队列未创建,遍历失败!\n");        return 0;    }    if(sq->front==sq->rear)     {        printf("队列为空,遍历失败!\n");        return 0;    }    else    {        int i=sq->front;        while(i!=sq->rear)          {            d=sq->queue[i];            printf("%d->",d);            i++;        }               return 1;    }}int getHead(sqqueue *sq,int *d){    if(sq==NULL)    {        printf("队列未创建,遍历失败!\n");        return 0;    }    if(sq->front==sq->rear)     {        printf("队列为空,遍历失败!\n");        return 0;    }       *d=sq->queue[sq->front];    printf("%d\n",*d);    printf("取队首元素成功!\n");    return 1;}void main(){    sqqueue sq;    int choice,data,d;    if(initqueue(&sq)==1)        printf("队列创建成功!\n");    else        printf("队列创建失败!\n");        while(1)        {            printf("-----------------------------------------\n");            printf("     1、入栈\n");            printf("     2、出栈\n");            printf("     3、遍历\n");            printf("     4、取队首元素\n");            printf("     5、退出\n");            printf("-----------------------------------------\n");             printf("请输入你的选择:\n");            scanf("%d",&choice);            switch(choice)            {                case 1:                    printf("请输入入栈元素:\n");                    scanf("%d",&data);                    if(enqueue(&sq,data))                    {                        printf("%d入栈成功!\n",data);                     }                    break;                case 2:                    if(outqueue(&sq,d))                    printf("出栈成功!\n");                      break;                case 3:                         if(traverseQueue(&sq))                    printf("遍历成功!\n");                    break;                case 4:                    getHead(&sq,&d);                    break;                case 5:                    return 0;            }        }}

这里是运行结果

0 0