user-0 提问: 7-4 银行业务队列简单模拟 (25 分)

回复:
user: user-1
content: 7-1 简单计算器 (25 分)本题要求你为初学数据结构的小伙伴设计一款简单的利用堆栈执行的计算器。如上图所示，计算器由两个堆栈组成，一个堆栈 S1,存放数字，另一个堆栈 S2,存放运算符。计算器的最下方有一个等号键，每次按下这个键，计算器就执行以下操作：从 S1中弹出两个数字，顺序为 n1和 n2；从 S2 中弹出一个运算符 op；执行计算 n2op n1；将得到的结果压回 S1。

user: user-2
content: C和C++ 完整教程：https://blog.csdn.net/it_xiangqiang/category_10581430.html C和C++ 算法完整教程：https://blog.csdn.net/it_xiangqiang/category_10768339.html

user: user-3
content: #include<stdio.h> #include<malloc.h> #include<stdlib.h> int main() {     int A[1000];     int B[1000];     int N;     int a=0, b=0, temp;     scanf("%d", &N);     for(int i=0; i<N; i++){         scanf("%d", &temp);         if(temp % 2 == 1)             A[a++] = temp;         else             B[b++] = temp;     }     int i = 0, j = 0;     if(a > 1){//A有超过两个人，输出两个         printf("%d %d", A[0], A[1]);         i = 2;     }     else if(a > 0)//A有超过一个人，输出一个         printf("%d", A[i++]);     else if(b > 0)//A没人，B有人，输出B一个         printf("%d", B[j++]);       if(j == 0)//输出了A没输出B，输出一个B来控制输出一组         printf(" %d", B[j++]);          while(i < a && j < b){         if(i+1 < a){             printf(" %d %d",A[i], A[i+1]);             i += 2;         }         else             printf(" %d", A[i++]);         printf(" %d", B[j++]);     }     while(i < a)         printf(" %d", A[i++]);     while(j < b)         printf(" %d", B[j++]); }

user: user-4
content: #include<stdlib.h> #include<stdio.h>  void Print(int);  int main() {     int n;     scanf("%d",&n);     int a[1001];     for(int k=0; k<n; k++)      {         scanf("%d",&a[k]);     }     int i=0,j=0;     while(i<n||j<n)      {         for(; i<n; i++)             if(1==a[i]%2)              {                               Print(a[i++]);                 break;             }         for(; i<n; i++)          {             if(1==a[i]%2)              {                 Print(a[i++]);                 break;             }         }         for(; j<n; j++)          {             if(0==a[j]%2)              {                 Print(a[j++]);                break;             }         }     }      return 0; } void Print(int num) {     static int flag=0;     if(flag) printf(" ");     else flag=1;       printf("%d",num);  }

user: user-0
content: #include<stdio.h> #include<stdlib.h> #define MAX 1000 #define error -1 typedef struct node {     int customer[MAX];     int rear;     int front; }queue; void add(queue* q, int item) {     if ((q->rear + 1) % MAX == q->front)     {         printf("队列满\n");         return;     }     q->rear = (q->rear + 1) % MAX;     q->customer[q->rear] = item; } int isempty(queue* q) {     return q->front == q->rear; } int deleteq(queue* q) {     if (isempty(q))     {         printf("队空\n");         return error;     }     q->front = (q->front + 1) % MAX;     return q->customer[q->front]; } void initial(queue* q) {     q->rear = q->front = 0; } int main() {     int N, i, number, flag;     queue A, B;     initial(&A);     initial(&B);     scanf("%d", &N);     for (i = 0; i < N; i++)     {         scanf("%d", &number);         if (number % 2)//奇数存入A             add(&A, number);         else             add(&B, number);//偶数存入B     }     flag = 0;//标记第一个顾客     while (!isempty(&A) && !isempty(&B))//A与B都非空时间隔输出     {         if (flag==0)         {             printf("%d", deleteq(&A));             flag = 1;         }         else             printf(" %d", deleteq(&A));         if (!isempty(&A))             printf(" %d", deleteq(&A));         printf(" %d", deleteq(&B));     }     while (!isempty(&A))     {         if (flag==0)         {             printf("%d", deleteq(&A));             flag = 1;         }         else             printf(" %d", deleteq(&A));     }     while (!isempty(&B))     {         if (!flag)         {             printf("%d", deleteq(&B));             flag = 1;         }         else             printf(" %d", deleteq(&B));     }     printf("\n"); }

user: user-5
content: int InitQueue(SqQueue &Q) {     Q.base=new int[MAXSIZE];     if(!Q.base)         return OVERFLOW;     Q.front=Q.rear=0;     return OK; } int DeQueue(SqQueue &Q,int &e) {     if(Q.front==Q.rear)         return ERROR;     e=Q.base[Q.front];     Q.front=(Q.front+1)%MAXSIZE;     return OK; } void Print(int *arr,int n) {     cout<<arr[0];     for(int i=1;i<n;i++)         cout<<" "<<arr[i]; }