某通信系统使用固定大小为 5 的循环缓冲区来传输数据。当缓冲区满时,新数据会覆盖最旧的数据;当缓冲区空时,读取操作返回 - 1。请模拟这个循环缓冲区的工作过程,处理一系列写入和读取操作,并输出相应结果。
输入包含多行,每行是一个操作指令: W n:表示将数据 n 写入缓冲区(0 ≤ n ≤ 1000) R:表示从缓冲区读取最早写入的数据 P:表示打印当前缓冲区的内容(从最早到最新) Q:表示结束输入
对于每个操作,输出相应结果: 写入操作(W): 若缓冲区未满,输出 "Written: n" 若缓冲区已满,输出 "Buffer full, overwriting: n",并覆盖最早的数据 读取操作(R): 若缓冲区非空,输出 "Read: x" where x is the data value. 若缓冲区为空,输出 "Buffer empty, cannot read" 打印操作(P): 输出当前缓冲区的内容,格式为 "Contents: a b c d e"(无内容时输出 "Contents:") 结束操作(Q):不输出任何内容
W 1 W 2 W 3 W 4 W 5 W 6 P R R P W 7 W 8 P Q
Written: 1 Written: 2 Written: 3 Written: 4 Written: 5 Buffer full, overwriting: 6 Contents: 2 3 4 5 6 Read: 2 Read: 3 Contents: 4 5 6 Written: 7 Written: 8 Contents: 4 5 6 7 8