| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 6192 人关注过本帖, 1 人收藏
标题:银行排队队列问题则么解决
取消只看楼主 加入收藏
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
结帖率:66.67%
收藏(1)
 问题点数:0 回复次数:6 
银行排队队列问题则么解决
求教队列问题,希望指教下
问题描述】
目前银行、医院等单位通过“叫号机”模拟了人群排队的过程,用户取票进队。叫号排队是队列应用的一个典型例子,设计一个程序,演示叫号排队系统的实现过程。
【基本要求】
匀客户到达银行时,先取号(显示当前的客户号,以及正在等待的客户人数)。当有窗口空闲时,若有等待的客户,则显示信息:请XXXX号客户到YY号窗口办理。设定窗口数量为3个,允许的最多排队等待顾客数为30,超过30则系统禁止取票。

我做不下去了,指导下我吧


#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
#define N 30///队列最大人数
#define w3///银行窗口个数
typedef猀琀爀甀挀琀 Node{
 int data;
 struct Node *next;
}node;

typedef struct {
 node * front;
 node * rear;

}queue;

void initqueue(queue *q)
{
 q->front=q->rear=(node*)malloc(sizeof(node));
 if(!q->front)攀砀椀琀(0);
 q->front->next=NULL;

}

void destroyqueue(queue *q)
{
 while(q->front){

焀->rear=q->front->next;
昀爀攀攀(q->front);
焀->front=q->rear;
 }
 printf("队列销毁成功\n");

}

void enterqueue(queue *q,int a)
{
 node *p;
 p=(node*)malloc(sizeof(node));
 if(!p)攀砀椀琀(0);
 p->data=a;
 p->next=NULL;
 q->rear->next=p;
 q->rear=p;
 printf("\t您的号码为%d\t",a);
 
}

void deletequeue(queue *q,int a)
{
 node *p;
 p=(node*)malloc(sizeof(node));
 if(q->front=q->rear)笀 printf("队列为空\n");exit(0);}
 p=q->front->next;
 a=p->data;
 q->front->next=p->next;
 if(q->rear==p) q->rear=q->front;
 free(p);
 printf("%d已离开\n",a);
 
}



void main()
{
焀甀攀甀攀 *list;
椀渀琀渀甀洀戀攀爀=1,m;
挀栀愀爀 ch1,ch2;
氀椀猀琀=(queue*)malloc(sizeof(queue));
椀渀椀琀焀甀攀甀攀(list);
 
眀栀椀氀攀(1){
瀀爀椀渀琀昀("请输入“#”字符获取排队号,其他字符无效:\t");
猀挀愀渀昀("%c",&ch1);
最攀琀挀栀愀爀();

椀昀(ch1!='#')笀瀀爀椀渀琀昀("字符输入错误\n"); exit(0);}
椀昀(ch1=='#'){
攀渀琀攀爀焀甀攀甀攀(list ,number);
渀甀洀戀攀爀++;
瀀爀椀渀琀昀("\t请输入“&”获取窗口号: ");
猀挀愀渀昀("%c",&ch2);
最攀琀挀栀愀爀();
椀昀(ch2!='&')笀瀀爀椀渀琀昀("字符输入错误\n"); exit(0);}
椀昀(ch2=='&'){
 srand(time(NULL));
 m=rand()%3+1;
瀀爀椀渀琀昀("请到第%d个窗口办理业务:\n ",m);






//if ( count>N )瀀爀椀渀琀昀("\n已超过%d人等候,稍后再取号:\n",N);


}
搜索更多相关主题的帖子: 银行 include 用户 
2012-12-16 15:05
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
我重新发了
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#include<time.h>
#define N 30        ///队列最大人数
#define w  3         ///银行窗口个数
typedef  struct Node{
    int data;
    struct Node *next;
}node;

typedef struct {
    node * front;
    node * rear;

}queue;

void initqueue(queue *q)
{
    q->front=q->rear=(node*)malloc(sizeof(node));
    if(!q->front)  exit(0);
    q->front->next=NULL;

}

void destroyqueue(queue *q)
{
    while(q->front){

        q->rear=q->front->next;
        free(q->front);
        q->front=q->rear;
    }
    printf("队列销毁成功n");

}

void enterqueue(queue *q,int a)
{  
    node *p;
    p=(node*)malloc(sizeof(node));
    if(!p)   exit(0);
    p->data=a;
    p->next=NULL;
    q->rear->next=p;
    q->rear=p;
    printf("t您的号码为%dt",a);
   
}

void deletequeue(queue *q,int a)
{
    node *p;
    p=(node*)malloc(sizeof(node));
    if(q->front=q->rear)   { printf("队列为空n");exit(0);}
    p=q->front->next;
    a=p->data;
    q->front->next=p->next;
    if(q->rear==p) q->rear=q->front;
    free(p);
    printf("%d已离开n",a);
   
}

         

void main()
{   
     queue *list;
     int  number=1,m;
     char ch1,ch2;
     list=(queue*)malloc(sizeof(queue));
     initqueue(list);
   
     while(1){
        printf("请输入“#”字符获取排队号,其他字符无效:t");
        scanf("%c",&ch1);
        getchar();
        
        if(ch1!='#')  {printf("字符输入错误n"); exit(0);}
        if(ch1=='#'){
         enterqueue(list ,number);
         number++;
         printf("t请输入“&”获取窗口号: ");
         scanf("%c",&ch2);
         getchar();
         if(ch2!='&')  {printf("字符输入错误n"); exit(0);}
         if(ch2=='&'){
             srand(time(NULL));
             m=rand()%3+1;
           printf("请到第%d个窗口办理业务:n ",m);
         }

        }
        
        
         
        //if ( count>N )   printf("n已超过%d人等候,稍后再取号:n",N);   

     }
}
2012-12-16 20:34
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
回复 6楼 小小战士
visualc++ 6.0
2012-12-16 20:45
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
回复 8楼 小小战士
重新发的是我自己写的,觉得不太好,希望修改下
2012-12-16 21:02
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
回复 10楼 小小战士
这就是我不会的地方,能不能设定个固定值比如办理时间为10秒,
2012-12-16 21:38
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
回复 10楼 小小战士
我能加你QQ吗,,,我的 1970272731
发份离线文件给我
2012-12-16 21:48
苍茫大地yj
Rank: 1
来 自:杭州
等 级:新手上路
帖 子:24
专家分:6
注 册:2012-12-15
收藏
得分:0 
回复 12楼 小小战士
每个窗口过5秒钟后减少1个,队列最多30人,这样可以做到吗
2012-12-16 21:50
快速回复:银行排队队列问题则么解决
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.015033 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved