首页 新闻 会员 周边 捐助

数据结构队列相关方面问题

0
悬赏园豆:100 [待解决问题]

/* Note:Your choice is C IDE */
#include "stdio.h"
#define Maxsize 50
/*11.17
    模拟银行排队叫号
    题目要求:
        (1)取号(入队):1.给排队号,前面有多少个人在等待;
        (2)叫号(出队);
    解题思路步骤:
        (1)A去银行自动机取号(入队)办理业务;
        (2)A排队(出队)叫号,等待办理业务;
        (3)轮到A办理个业务(取队头元素),业务办理成功,取消已经叫的号(释放空间);
        
*/
//1.链队列的类型定义
typedef struct Node
{
      int data;      //数据域
      struct Node *next; //指针域
}LinkQueueNode;
//2.链队列的基本操作初始化
void InitQueue(LinkQueue *Q)
{
 Q->front=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));//生成头节点
 if(Q->front==NULL) return FALSE;//存储空间分配失败
 Q->rear=Q->front;   //队头指针和队尾指针都指向头节点
 Q->front->next==null;
 return TRUE;
}a
//3进队.
int EnQueue(LinkQueue *Q,int e)
{
 //将数据e元素插入到队列中
 LinkQueueNode *NewNode;
 NewNode=(LinkQueueNode*)malloc(sizeof(LinkQueueNode));//生成头节点
 if(NewNode==NULL) return FALSE;//存储空间分配失败
    NewNode->data=e;//为新节点的数据域赋值
    NewNode->data=NULL;
    Q->rear->next= NewNode;//将新节点插入到队尾
    Q->rea=NewNode;//使队尾指针指向新节点
     return  TRUE;
}
//3.出队
int DeQueue(LinkQueue *Q,int e)
{
 //若队列不空,则删除Q的队头元素,并e返回其值
 LinkQueueNode *p;
 if(Q->front==Q->rear)  //队列为空,删除失败
       reurn FALSE;
 p=Q->front->next;//从队头取出第一个节点
 *e=p->data;//用e返回节点p的值
 Q->front->next=p->next;//节点P出队
 if(Q->rear==p)//如果队列中只有一个节点,则p出队后成为空队列
     Q->rear=Q->front;
 free(p);   //释放存储空间
 return TRUE;
}LinkQueueNode;   

void BankNumber(int n)
{
 int i,temp;
 LinkQueue Q;
 InitQueue(&Q);
 for(i=0;i<Maxsize;i++)
 {
        printf("please input muqianpaiduihao: ");
          scanf("请办理个人业务");
        EnQueue(&Q);
       
 }  
 
 


void main()
{
    int n,m,k;
    printf("请输入银行排队叫号总人数m:");
    printf("请输入当前自己银行排队的号数 n:");
    printf("前面等待排队号的人数k="+"排队叫号总人数"+"-"+"自己银行排队的号数");
    scanf("%d",%m, %n,%k);
    BankNumber(n);
   
}

生存还是毁灭这是个值得思考的问题的主页 生存还是毁灭这是个值得思考的问题 | 初学一级 | 园豆:86
提问于:2017-11-17 17:41
< >
分享
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册