슈

[알고리즘] 단순 연결 리스트를 이용한 스택(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건
+
제목 글쓴이 날짜 조회
14-10-25 조회 5,112
14-10-25 조회 6,302
14-10-25 조회 3,735
14-10-25 조회 3,876
14-10-24 조회 3,848
14-10-23 조회 4,459
14-10-22 조회 3,602
14-10-22 조회 4,270
14-10-22 조회 7,123
14-10-22 조회 4,832
14-10-22 조회 4,780
14-10-22 조회 8,922
14-10-19 조회 4,703
14-10-18 조회 5,654
14-10-17 조회 5,152
14-10-17 조회 3,945
14-10-17 조회 6,028
14-10-17 조회 5,394
14-10-17 조회 8,841
14-10-17 조회 6,416
14-10-17 조회 4,696
14-10-17 조회 5,007
14-10-14 조회 3,265
14-10-14 조회 4,188
14-10-13 조회 3,748
14-10-13 조회 6,393
14-10-13 조회 4,332
14-10-13 조회 4,231
14-10-13 조회 4,427
14-10-11 조회 6,591
14-10-11 조회 6,502
14-10-11 조회 6,386
14-10-10 조회 3,888
14-10-10 조회 6,346
14-10-10 조회 5,631
14-10-10 조회 6,200
14-10-10 조회 3,463
14-10-10 조회 5,362
14-10-10 조회 5,364
14-10-10 조회 5,465
14-10-10 조회 4,379
14-10-10 조회 4,870
14-10-10 조회 4,163
14-10-10 조회 4,020
14-10-08 조회 4,539
14-10-08 조회 3,662
14-10-08 조회 6,886
14-10-07 조회 6,122
14-10-07 조회 4,295
14-10-07 조회 5,456
14-10-07 조회 3,651
14-10-07 조회 4,645
14-10-07 조회 6,297
14-10-06 조회 6,655
14-10-06 조회 7,443
14-10-05 조회 3,651
14-10-04 조회 4,738
14-10-03 조회 6,092
14-10-02 조회 3,832
14-09-29 조회 4,030
14-09-29 조회 4,489
14-09-28 조회 3,804
14-09-27 조회 5,148
14-09-27 조회 4,605
14-09-26 조회 6,670
14-09-26 조회 5,102
14-09-25 조회 7,456
14-09-25 조회 3,991
14-09-25 조회 3,991
14-09-24 조회 4,791
14-09-24 조회 4,754
14-09-24 조회 4,236
14-09-24 조회 3,815
14-09-24 조회 4,429
14-09-24 조회 3,883
14-09-23 조회 4,074
14-09-23 조회 4,198
14-09-23 조회 3,958
14-09-22 조회 3,833
14-09-22 조회 4,746
14-09-22 조회 4,850
14-09-22 조회 6,073
14-09-22 조회 4,047
14-09-22 조회 3,727
14-09-22 조회 3,776
14-09-21 조회 5,724
14-09-21 조회 4,338
14-09-21 조회 4,316
14-09-21 조회 3,790
14-09-21 조회 4,356
14-09-21 조회 4,242
14-09-21 조회 3,900
14-09-20 조회 3,907
14-09-20 조회 3,793
14-09-20 조회 3,700
14-09-20 조회 4,441
14-09-20 조회 3,880
14-09-19 조회 3,827
14-09-19 조회 3,971
14-09-19 조회 4,153