去银行办业务的第一件事是在取号机上取号等待服务. 其实,银行取号机是一个简单的队列. 请同学们用单链表存储和管理方式实现这个服务: 主要功能包括队列初始化, 入队操作, 出队操作.
#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 -2
typedef 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;
}
本文介绍了一个使用单链表实现的银行取号系统。该系统包括队列初始化、入队操作和出队操作等功能。通过示例代码展示了如何进行姓名和编号的入队与出队操作。
1180

被折叠的 条评论
为什么被折叠?



