슈

[알고리즘] 단순 연결 리스트를 이용한 스택(stack)

/*

연결 리스트, 링크드 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 

데이터를 저장하는 자료 구조이다. 

이름에서 말하듯이 데이터를 담고 있는 노드들이 연결되어 있는데, 

노드의 포인터가 다음이나 이전의 노드와의 연결을 담당하게 된다. 

연결 리스트의 종류로는 단순 연결 리스트, 이중 연결 리스트 등이 있다. 

*/

// 단순 연결 리스트를 이용한 스택의 구현

 

class Node {

    public $key;

    public $next = Node;

} 

 

$head = new Node;

$tail = new Node;

 

function init_stack() {

    Global $head, $tail;

 

    $head->next = $tail;

    $tail->next = $tail;

}

 

function clear_stack() {

    Global $head, $tail;

    $t = Node;

    $s = Node;

 

    $t = $head->next;

    while ($t != $tail) {

        $s = $t;

        $t = $t->next;

        $s = null;

    }

    $head->next = $tail;

}

 

function push($k) {

    Global $head, $tail;

    $t = new Node;

   

    if ($t == NULL) {

        println("   Out of memory...");        

    }

  

    $t->key = $k;

    $t->next = $head->next;

    $head->next = $t;

}

 

function pop() {

    Global $head, $tail;

    $t = new Node;

 

    if ($head->next == $tail)  /* if empty */ {

        println("  Stack underflow.");

        return -1;

    }

    $t = $head->next;

    $i = $t->key;

    $head->next = $t->next;

    $t = null;

    

    return $i;

}

 

function print_stack() {

    Global $head, $tail;

    $t = new Node;

 

    $t = $head->next;

    println("  Stack contents : Top ----> Bottom");

    while ($t != $tail) {

        println($t->key);

        $t = $t->next;

    }

}

 

init_stack();

 

println('Push 1, 2, 3');

push(1);

push(2);

push(3);

print_stack();

 

$i = pop();

println('Pop '.$i);

print_stack();

 

println('Push 4, 5, 6');

push(4);

push(5);

push(6);

print_stack();

 

println('Initialize stack');

clear_stack();

print_stack();

 

println('Now stack is empty,');

println('Pop');

$i = pop();

print_stack();

 

function println($str=''){

    echo $str.'<br />';

} 

 

/* output

Push 1, 2, 3

Stack contents : Top ----> Bottom
3
2
1
Pop 3
Stack contents : Top ----> Bottom
2
1
Push 4, 5, 6
Stack contents : Top ----> Bottom
6
5
4
2
1
Initialize stack
Stack contents : Top ----> Bottom
Now stack is empty,
Pop
Stack underflow.

Stack contents : Top ----> Bottom 

*/

|
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

8,188건
+
제목 글쓴이 날짜 조회
15-12-13 조회 2,528
15-12-13 조회 2,943
15-12-11 조회 2,605
15-12-11 조회 2,565
15-12-11 조회 2,569
15-12-10 조회 2,527
15-12-10 조회 2,586
15-12-10 조회 2,559
15-12-03 조회 3,203
15-12-03 조회 2,718
15-11-25 조회 2,799
15-11-09 조회 3,209
15-11-04 조회 2,971
15-06-09 조회 4,094
15-05-06 조회 5,092
15-03-28 조회 4,576
14-12-05 조회 4,999
14-10-25 조회 5,096
14-10-13 조회 4,272
14-10-03 조회 6,262
14-09-19 조회 4,963
14-09-18 조회 4,050
14-09-13 조회 4,615
14-09-03 조회 5,602
14-08-26 조회 4,208
14-08-26 조회 4,013
14-08-26 조회 3,977
14-08-11 조회 6,506
14-08-06 조회 4,126
14-08-06 조회 3,724
14-08-06 조회 3,936
14-08-01 조회 6,306
14-08-01 조회 3,843
14-07-30 조회 4,442
14-06-28 조회 5,165
14-06-28 조회 4,437
14-05-11 조회 4,591
14-05-09 조회 4,950
14-05-09 조회 7,713
14-04-30 조회 4,333
14-04-27 조회 4,195
14-04-25 조회 4,898
14-04-21 조회 3,876
14-04-21 조회 5,005
14-04-10 조회 4,603
14-04-01 조회 6,158
14-03-03 조회 3,533
14-02-25 조회 5,921
14-02-14 조회 5,195
14-02-13 조회 4,953
14-01-03 조회 4,445
13-12-06 조회 3,767
13-11-22 조회 5,522
13-11-18 조회 4,028
13-10-02 조회 4,447
13-10-02 조회 3,696
13-10-02 조회 3,962
13-10-02 조회 3,817
13-10-02 조회 4,183
13-09-16 조회 8,032
13-09-16 조회 5,397
13-08-18 조회 5,428
13-07-11 조회 4,111
13-07-10 조회 4,694
13-07-09 조회 4,732
13-07-09 조회 4,988
13-07-04 조회 4,487
13-07-04 조회 4,125
13-07-04 조회 4,238
13-07-01 조회 4,726
13-07-01 조회 4,558
13-07-01 조회 6,832
13-06-23 조회 4,380
13-06-05 조회 3,627
13-05-29 조회 4,868
13-05-10 조회 4,276
13-04-05 조회 4,896
13-04-05 조회 6,585
13-04-05 조회 1.1만
13-04-05 조회 7,179
13-04-05 조회 6,566
13-03-31 조회 5,836
13-03-31 조회 4,165
13-03-28 조회 4,524
13-03-28 조회 6,721
13-03-28 조회 9,203
13-03-28 조회 4,336
13-03-24 조회 3,952
13-03-21 조회 4,629
13-03-21 조회 1.8만
13-03-14 조회 3,937
13-03-10 조회 4,746
13-03-10 조회 4,506
13-03-10 조회 4,206
13-03-08 조회 5,262
13-03-08 조회 4,369
13-03-03 조회 5,025
13-03-03 조회 7,478
13-03-03 조회 4,219
13-03-03 조회 1.1만