队列

来源:互联网 发布:lol主播的淘宝店网址 编辑:程序博客网 时间:2024/06/05 09:17
#include <stdlib.h>#include <stdio.h>#include <string.h>#define QUEUELEN 15typedef struct{    char name[10];    int age;}DATA;typedef struct{    DATA data[QUEUELEN];    int head;    int tail;}SQType;SQType *SQTypeInit(){    SQType *q;    if(q=(SQType *)malloc(sizeof(SQType)))    {        q->head=0;//设置队头        q->tail=0;//设置队尾        return q;    }    else    {        return NULL;    }}int SQTypeIsEmpty(SQType *q)//判断空队列{    int temp;    temp=q->head==q->tail;    return (temp);}int SQTypeFull(SQType *q)//判断满队列{    int temp;    temp=q->tail==QUEUELEN;    return (temp);}void SQTypeClear(SQType *q)//清空队列{    q->head=0;    q->tail=0;}void SQTypeFree(SQType *q)//释放队列{    if(q!=NULL)    {        free(q);    }}int InSQType(SQType *q,DATA data)//入队列{    if(q->tail==QUEUELEN)    {        printf("队列已满!操作失败!\n");        return 0;    }    else    {        q->data[q->tail++]=data;        return 1;    }}DATA *OutSQType(SQType *q)//出队列{    if(q->head==q->tail)    {        printf("\n队列已空!操作失败!\n");        exit(0);    }    else    {        return &(q->data[q->head++]);    }}DATA *PeekSQType(SQType *q)//读结点数据{    if(SQTypeIsEmpty(q))    {        printf("\n空队列!\n");        return NULL;    }    else    {        return &(q->data[q->head]);    }}int SQTypeLen(SQType *q)//计算队列长度{    int temp;    temp=q->tail-q->head;    return temp;}int main(){    SQType *stack;    DATA data;    DATA *datal;    stack=SQTypeInit();    printf("入队列操作:\n");    printf("输入姓名 年龄进行入队列操作:");    do    {        scanf("%s%d",data.name,&data.age);        if(strcmp(data.name,"0")==0)        {            break;        }        else        {            InSQType(stack,data);        }    }while(1);    do    {        printf("出队列操作:按任意键进行出栈操作:\n");        getchar();        datal=OutSQType(stack);        printf("出队列的数据是(%s,%d)",datal->name,datal->age);    }while(1);    SQTypeFree(stack);    return 0;}

原创粉丝点击