// 삭제를 실행하는 fDataOut 메소드 private void fDataOut() { if (Minheap.isEmpty()) // 만약 힙이 비어있으면 삭제 할 수 없도록 안내문을 입력해준다. { addnumTxt.Text = ""; addnumTxt2.Text = ""; MessageBox.Show("삭제 할 수 있는 노드가 존재하지 않습니다."); removenumTxt1.Text = "더이상 삭제를 할 수 없습니다."; removenumTxt2.Text = ""; } else { addnumTxt.Text = ""; addnumTxt2.Text = ""; removenumTxt1.Text = "삭제된 루트 노드 :"; removenumTxt2.Text = Minheap.node[1].ToString(); // 삭제할 뿌리노드를 폼화면에 출력해주는 역할 Minheap.remove(); // Minheap의 remove실행 int num = Minheap.node.Count - 1; Label[] lb = new Label[] { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 }; lb[num + 1].Text = ""; // 삭제 하기전 맨 마지막 노드의 정보를 삭제를 한 이후에는 폼 화면에 나타내지 않기 위해 공백을 넣어준다. table_list[num].Visible = false; // 맨 마지막 노드 자리에 아무것도 출력되지 않도록 해준다. label_list[num].Visible = false; for (int i = num; i > 0; i--) { lb[i].Text = Minheap.node[i].ToString(); } } }
// private void fDataIn() { Label[] lb = new Label[] { a0, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15 }; // lb라는 라벨 배열을 만들어서 숫자를 나타내게 하는 라벨의 정보들을 넣는다. Random random = new Random(); // 랜덤을 이용해서 난수를 생성한다. int winning_number = random.Next(0, 151); // 0부터 150까지의 숫자들 중에서 랜덤으로 숫자를 winning_number에 넣는다. if (Minheap.node.Count == 0) // 만약 노드의 count가 0이면 key값은 0으로 넘겨주고 , true를 넘겨준다. 그리고 난뒤 return; { Minheap.insert(0, true); return; } // 노드의 카운트가 0이 아닐 경우 else { removenumTxt1.Text = ""; removenumTxt2.Text = ""; addnumTxt.Text = "추가된 노드의 값 :"; // 추가된 노드의 값을 알려주는 안내문1 addnumTxt2.Text = winning_number.ToString(); // 추가된 노드의 값을 알려주는 안내문2 if (Minheap.node.Count < 16) // 만약 노드의 카운트가 15개이하일 경우에만 실행된다. { Minheap.insert(winning_number, false); // Maxheap insert 메소드 실행, 매개변수에는 난수를 넣어준다. for (int i = 0; i < Minheap.node.Count - 1; i++) { // for문을 이용해서 노드의 개수에 맞춰서 노드의 개수를 알려주는 라벨과 테이블패널의 visible을 true로 바꿔서 // 폼에 나타나도록 한다. label_list[i].Visible = true; table_list[i].Visible = true; } foreach (var list_max in Minheap.node) { int num = Minheap.node.Count; // num에는 현재 노드의 count를 대입 lb[0].Text = ""; // lb[0]에는 쓰레기값 0을 넣었으므로 표시가 되기때문에 ""를 통해 폼화면에는 아무것도 나타나지 않도록 함. for (int i = 1; i < num; i++) { lb[i].Text = Minheap.node[i].ToString(); // 노드의 숫자들을 폼에 표현하기 위해 만들어둔 라벨 배열에다가 //노드 숫자의 값들을 입력해준다. } } } else { //노드의 카운트가 16을 넘어갈 경우에는 더이상 추가 할 수 없다는 안내문을 출력해준다. MessageBox.Show("더이상 추가할 수 없습니다."); removenumTxt1.Text = ""; removenumTxt2.Text = ""; addnumTxt.Text = "더이상 추가 할 수 없습니다. "; addnumTxt2.Text = ""; } } }