연결리스트는 노드를
연결하여 구성하는 데이터 구조이지만 보다 자유로운 데이터 입출력이 가능하다.
스택이나 큐가 특정 위치에서만 자료가 삭제가능한 반면 연결 리스트는 원하는 데이터를 자유롭게 삭제할 수 있다. 연결 리스트 데이터 구조의 특징은 다음과 같다.
1) 데이터 구조는 노드의 연결로 구성된다.
2) 데이터는 위치에 상관없이 아무 것이나 삭제할 수 있다.
[예제 5‑16] 연결리스트 데이터 구조 에뮬레이션 /chap05/AsExam5_16.as (실제 데이터 구조 구현은 아님)
package
{
import flash.display.DisplayObject;
import flash.display.Sprite;
import flash.events.MouseEvent;
//
연결리스트 에뮬레이션
[SWF(backgroundColor = 0xFFFFFF)]
public class AsExam5_16 extends Sprite
{
// 화면에 그려질 데이터 간에 간격을 주기 위한 값
private var gap:int = 10;
public function AsExam5_16()
{
// 무지개빛 LinkedListData 객체 7개를 추가(addNode) 한다
var data1:LinkedListData = new LinkedListData(0xFF0000);
var
data2:LinkedListData = new
LinkedListData(0xFFA500);
var
data3:LinkedListData = new LinkedListData(0xFFFF00);
var
data4:LinkedListData = new
LinkedListData(0x008000);
var
data5:LinkedListData = new
LinkedListData(0x0000FF);
var
data6:LinkedListData = new
LinkedListData(0x4B0082);
var data7:LinkedListData
= new LinkedListData(0x800080);
addNode(data1);
addNode(data2);
addNode(data3);
addNode(data4);
addNode(data5);
addNode(data6);
addNode(data7);
// 화면을 클릭했을 때
LinkedListData 객체를 삭제 (deleteNode) 한다.
stage.addEventListener(MouseEvent.CLICK, clickHandler);
}
//
LinkedListData를
화면에 추가하고 간격을 조정한다.
private function addNode(sp:Sprite):void
{
this.addChild(sp);
sp.x = sp.y = gap;
gap += 10;
}
//
화면을 클릭하면 LinkedListData 객체를 deleteNode한다.
private function clickHandler(event:MouseEvent):void
{
deleteNode(event.target as Sprite);
}
//
pop의 구현:
선택한 LinkedListData 객체를 한 건 지운다.
private function deleteNode(sp:DisplayObject):void
{
this.removeChild(sp);
}
}
}
import flash.display.Sprite;
// Sprite를 확장하여 만든
LinkedListData
class LinkedListData extends Sprite
{
public function LinkedListData(c:uint)
{
//
화면에 모서리가 둥근 사각형을 그려준다.
this.graphics.beginFill(c);
this.graphics.drawRoundRect(100, 100, 100,
100, 10, 10);
}
}
[연결리스트 데이터 구조 시뮬레이션]
실제 구현은 이 다음 강좌에서 다룹니다^^






okgosu
최근 답변 댓글