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

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


#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您的号码为%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()
{   
     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);   

     }
}





 
搜索更多相关主题的帖子: 系统 include 用户 
2012-12-14 14:08
抽刀断水yj
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:20
专家分:15
注 册:2012-11-27
收藏
得分:0 
回复 2楼 crystall
我用的是visual c++6.0 ,编译通不过,不需要这么复杂,只需要简单的排队 叫号而已

主动,自主
2012-12-14 23:39
抽刀断水yj
Rank: 2
来 自:杭州
等 级:论坛游民
帖 子:20
专家分:15
注 册:2012-11-27
收藏
得分:0 
回复 4楼 crystall
  错误:fatal error C1083: Cannot open include file: 'stdafx.h': No such file or directory

主动,自主
2012-12-15 21:27
快速回复:求教队列问题,希望指教下
数据加载中...
 
   



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

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