C语言用队列结构模拟,银行业务排队系统实现 1.有储户要办理存取款业务时,取号等待,编号入队

C语言用队列结构模拟,银行业务排队系统实现

1.有储户要办理存取款业务时,取号等待,编号入队列,
2.窗口发出指令办理完一个业务时,既可从号码队列中取号,继续办理.同时兼顾一个窗口办理量不超过15人次的要求。

别用太麻烦的,越简单易懂越好!谢啦!

很明显 这个只要实现队列一切就简单了 其实c++有quene类 这里我们自己实现它

剩下的自己来写就好了 很简单的

首先一个链表的

#include <iostream>
using namespace std;
//链表
typedef struct QDode
{
     int n;
 struct QDode *next;
}*pqdode,qdode;
//队列
typedef struct MyQueue
{
pqdode front;
pqdode rear;
}*pmyqueue,myqueue;
bool Init_queue(pmyqueue qu);//初始化队列
bool Is_empty(pmyqueue qu);//判断队列是否为空
void Put_queue(pmyqueue qu,int val);//入队
int  Out_queue(pmyqueue qu);//出队
int  Travel_queue(pmyqueue qu);//遍历队列
void Destory_queue(pmyqueue qu);//销毁队列
//主函数
int main()

    myqueue queue={NULL,NULL};

    Init_queue(&queue);//初始化

Put_queue(&queue,5);//入队

if (!Is_empty(&queue))
{
cout<<"队列不为空"<<endl;
}

Put_queue(&queue,6);
    Put_queue(&queue,7);
Put_queue(&queue,8);
Put_queue(&queue,9);


    Travel_queue(&queue);//遍历
 
int val=Out_queue(&queue);
cout<<endl<<endl<<val<<endl<<endl;

Travel_queue(&queue);//遍历

int vall=Out_queue(&queue);
cout<<endl<<endl<<vall<<endl<<endl;

    Travel_queue(&queue);//遍历

Destory_queue(&queue);//销毁
    cout<<endl;
return 0;
}
bool Init_queue(pmyqueue qu)
{
 qu->front = new qdode;
 if (qu->front==NULL)
 {
 cout<<"动态分配内存失败!"<<endl;
 return false;
 }
 else
 {
         qu->rear=qu->front;
 qu->front->next=NULL;
 return true;
 }
}
void Destory_queue(pmyqueue qu)
{
 pqdode p=qu->front,q=NULL;
 while (p)
 {
         q = p->next;
         delete p;
 p = q;
 }
 p = NULL;
}
void Put_queue(pmyqueue qu,int val)
{
 qu->rear->n = val;
 pqdode q=qu->rear;
 pqdode p = new qdode;
 p->next = NULL;
 qu->rear = p;
     q->next = p;
}
bool Is_empty(pmyqueue qu)
{
 if (qu->front!=qu->rear)
 {
 return false;
 }
 else
 {
 return true;
 }
}
int Travel_queue(pmyqueue qu)
{
    int count=0;
if (Is_empty(qu))
{
cout<<"该队列为空!"<<endl;
return 0;
}
else
{
        pqdode p=qu->front,q=NULL;
while (p!=qu->rear)
{
count++;
cout<<p->n<<"    ";
if (!(count%5))
{
cout<<endl;
}
p = p->next;
}
    return count;
}

}
int Out_queue(pmyqueue qu)
{
if (Is_empty(qu))
{
cout<<"该队列为空!"<<endl;
return -1;
}
else
{
        int val=qu->front->n;
pqdode p = qu->front->next;
delete qu->front;
qu->front = p;
    return val;
}
}

然后一个数组实现的

#include <iostream>

using namespace std;

class  QUEUE       //队列类
{
private:         //私有成员
   int  *pBase;
   int  front,rear;
   int  count;
public:         //公有成员
       bool Is_empty();//判断是否为空
   bool Is_full();//判断是否满
       void enter_queue(int n);//入队
       int  out_queue();//出队
   void travel_queue();//遍历队
   QUEUE (int number = 100)
   {
          front  =  rear  =  0;
          pBase  =  new int[number+1];
  count  =  number  +  1;
   }
       ~QUEUE()
   {
   delete [] pBase;
   }
};
int main()
{
    QUEUE queue(5);
queue.enter_queue(1);
queue.enter_queue(2);
queue.enter_queue(3);
queue.enter_queue(4);
queue.enter_queue(5);
    queue.enter_queue(6);
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
queue.travel_queue();
queue.out_queue();
if (queue.Is_full())
{
cout<<"wangbadan"<<endl;
}
int n = queue.out_queue();
cout<<n<<endl;
queue.travel_queue();
int n1 = queue.out_queue();
cout<<n1<<endl;
queue.travel_queue();
return 0;
}
bool QUEUE::Is_empty()//判断是否满
{
     if (front == rear)
     {
 return true;
     }
 else
 {
 return false;
 }
}
bool QUEUE::Is_full()//判断是否空
{
if ((rear + 1) % count == front)
{
return true;
}
else
{
return false;
}
}
void QUEUE::enter_queue(int n)//入队
{
 if (Is_full())
 {
 cout<<"队列已满!"<<endl;
 }
 else
 {
 pBase[rear]=n;
     rear = (rear + 1) % count;
 }
 return;
}
int QUEUE::out_queue()//出队
{
 int n = pBase[front];
     if (Is_empty())
     {
 cout<<"该队列已空!"<<endl;
 return false;
     }
 else
 {
 front = (front + 1) % count;
 return n;
 }
}
void QUEUE::travel_queue()//遍历
{
 int j=0;
 for (int i=front;i % count != rear;i++)
 {
 j++;
 cout<<pBase[i%count]<<"  ";
 if (j==5)
 {
             cout<<endl;
 j=0;
 }
 }
 if (j)
 {
 cout<<endl;
 }
 return;
}

追问

#include
int main()
{
char key;
scanf("%c",&key);
while(key=='I')
{
printf("bababa:");
scanf("%c",&key);
}
return 0;
}

为什么这个,第二个scanf导致while循环跳出呢

不是应该让你继续输入一个字符么!?

为什么会直接跳出来了,到第一个scanf输入I时!!

追答

因为 第二个scanf是给key赋值啊
而while循环是根据key的值来判断是否继续的

追问

在第二个scanf输入之前,就已经跳出了循环

追答

那就是因为第一个key的值没有被赋值为I了呗

温馨提示:答案为网友推荐,仅供参考
相似回答