新建一个栈,读取标准输入 3 个整数 3 4 5,入栈 3 4 5,依次出栈,打印 5 4 3,新建循环队列(Maxsize 为 5),
读取标准输入 3 4 5 6 7,入队 7 时,队满,打印 false,然后依次出队,输出 3 4 5 6
Input
读取标准输入,内容依次是 3 4 5,换行后,接着是 3 4 5 6 7
Output
如果输入是 3 4 5,换行,接着是 3 4 5 6 7,那么输出是
5 4 3
false
3 4 5 6
注意每个数字占用两个字符的位置,5 之前是有一个空格的,第三行的 3 之前也是有一个空格的
栈、队列出队入队
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104
| #include <stdio.h> #include <stdlib.h>
typedef int ElemType; typedef struct { ElemType data[MaxSize]; int top; } SqStack;
void initStack(SqStack &S) { S.top = -1; }
bool push(SqStack &S, ElemType x) { if (S.top == MaxSize - 1) { return false; } S.data[++S.top] = x; return true; }
bool pop(SqStack &S, ElemType &x) { if (-1 == S.top) { return false; } x = S.data[S.top--]; return true; }
typedef struct { ElemType data[MaxSize]; int front, rear; } SqQueue;
void initQueue(SqQueue &Q) { Q.front = Q.rear = 0; }
bool enQueue(SqQueue &Q, ElemType x) { if ((Q.rear + 1) % MaxSize == Q.front) { return false; } Q.data[Q.rear] = x; Q.rear = (Q.rear + 1) % MaxSize; return true; }
bool deQueue(SqQueue &Q, ElemType &x) { if (Q.rear == Q.front) { return false; } x = Q.data[Q.front]; Q.front = (Q.front + 1) % MaxSize; return true; }
int main() { SqStack S; bool flag; ElemType m; initStack(S); int i, num; for (i = 0; i < 3; i++) { scanf("%2d", &num); push(S, num); } for (i = 0; i < 3; i++) { pop(S, m); printf("%2d", m); } printf("\n");
SqQueue Q; initQueue(Q); for (i = 0; i < 5; i++) { scanf("%d", &num); flag = enQueue(Q, num); if (false == flag) { printf("false\n"); } } ElemType element; for (i = 0; i < 4; i++) { deQueue(Q, element); printf("%2d", element); } printf("\n"); return 0; }
|