연결리스트는 노드를 연결하여 구성하는 데이터 구조이지만 보다 자유로운 데이터 입출력이 가능하다.

스택이나 큐가 특정 위치에서만 자료가 삭제가능한 반면 연결 리스트는 원하는 데이터를 자유롭게 삭제할 수 있다. 연결 리스트 데이터 구조의 특징은 다음과 같다.

1) 데이터 구조는 노드의 연결로 구성된다.

2) 데이터는 위치에 상관없이 아무 것이나 삭제할 수 있다.

1.JPG

[예제 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); 

    }

}

[연결리스트 데이터 구조 시뮬레이션]

실제 구현은 이 다음 강좌에서 다룹니다^^



profile