链队列

来源:互联网 发布:淘宝零食营业执照 编辑:程序博客网 时间:2024/05/22 00:36

  去银行办业务的第一件事是在取号机上取号等待服务. 其实,银行取号机是一个简单的队列. 请同学们用单链表存储和管理方式实现这个服务: 主要功能包括队列初始化, 入队操作, 出队操作.

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <malloc.h>#define OK        1#define ERROR     0#define TRUE      1#define FALSE     0#define OVERFLOW -2typedef int Status;typedef char CQElemType;typedef int QElemType;typedef struct QNode{    CQElemType name[10];//姓名QElemType  number[10];//编号    struct QNode* next;}QNode,*QueuePtr;typedef struct LinkQueue{    QueuePtr qfront;    QueuePtr qrear;    int queuesize;}LinkQueue;Status InitLinkQueue(LinkQueue &LQ)//初始化{LQ.qfront=LQ.qrear=(QueuePtr)malloc(sizeof(QNode));LQ.qfront->next=NULL;    LQ.queuesize=0;    return OK;}Status EnQueue(LinkQueue &LQ,QElemType e2[],CQElemType e1[])//入队列{    QueuePtr q;    q=(QueuePtr)malloc(sizeof(QNode));if(!q)return ERROR;for(int i=0;i<10;i++){q->number[i]=e2[i];}strcpy(q->name,e1);    q->next=NULL;    LQ.qrear->next=q;LQ.qrear=q;LQ.queuesize++;    return OK;}QueuePtr DeQueue(LinkQueue &LQ)//出队列{QueuePtr q,p;    if(LQ.queuesize==0)        return ERROR;    else    {     q=LQ.qfront->next;LQ.qfront=q;p=q;LQ.queuesize--;    }    return q;}int main(){int i;QElemType e1[10]={1,2,3,4,5,6,7,8,9,0};CQElemType e2[10]={"Bob"};    LinkQueue Q;QueuePtr q;    InitLinkQueue(Q);    for(i=0;i<5;i++)    {        EnQueue(Q,e1,e2);    }    for(i=0;i<5;i++)    {        q=DeQueue(Q);printf("%s\n",q->name);for(int i=0;i<10;i++)printf("%d",q->number[i]);printf("\n");    }    return OK;}


0 0
原创粉丝点击