2. 環佇列(Circular Queue)運作系統
namespace Q2
{
public partial class Form1 : Form
{
int SIZE = 6;
int L = 0;
int R = 4;
int N = 2;
string rd()
{
return new Random().Next(1, 1000).ToString();
}
void init()
{
tb = new TextBox[SIZE];
flowLayoutPanel1.Controls.Clear();
for (int i = 0; i < SIZE; i++)
{
var t = new TextBox();
tb[i] = t;
t.Location = new Point(i * 40, 40);
t.Width = 40;
t.Height = 40;
t.Margin = Padding.Empty;
flowLayoutPanel1.Controls.Add(t);
}
}
TextBox[] tb;
public Form1()
{
InitializeComponent();
init();
tb[4].Text = rd();
tb[5].Text = rd();
}
private void button3_Click(object sender, EventArgs e)
{
Close();
}
private void button1_Click(object sender, EventArgs e)
{
if (N == SIZE - 1)
{
SIZE *= 2;
var old = tb;
init();
for (int i = 0; i < L; i++)
{
tb[i].Text = old[i].Text;
}
for (int i = L + 1; i < SIZE / 2; i++)
{
var k = old[i].Text;
tb[SIZE / 2 + i].Text = k;
}
R = (SIZE / 2 + L + 1);
}
// add
tb[L].Text = rd();
msg.Text = "Added " + tb[L++].Text;
N++;
if (L == SIZE) L = 0;
}
private void button2_Click(object sender, EventArgs e)
{
if (N == 0)
{
msg.Text = "Queue is empty";
return;
}
msg.Text = "Removed " + tb[R].Text;
tb[R].Text = "";
N--;
R++;
if (R == SIZE) R = 0;
}
private void Form1_Load(object sender, EventArgs e)
{
}
}
}
Last updated