队列
来源:互联网 发布: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;}