슈

[알고리즘] 단순 연결 리스트를 이용한 스택(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-11-20 조회 2,570
15-11-20 조회 2,521
15-11-20 조회 2,656
15-11-18 조회 2,812
15-11-18 조회 2,691
15-11-18 조회 2,677
15-11-17 조회 2,880
15-11-17 조회 2,637
15-11-17 조회 2,771
15-11-16 조회 2,652
15-11-16 조회 2,621
15-11-16 조회 2,811
15-11-15 조회 2,817
15-11-15 조회 2,684
15-11-15 조회 2,804
15-11-09 조회 2,990
15-11-09 조회 2,746
15-11-09 조회 2,790
15-11-06 조회 3,383
15-11-05 조회 2,867
15-11-05 조회 2,725
15-11-05 조회 2,850
15-11-04 조회 2,817
15-11-04 조회 2,871
15-11-04 조회 2,752
15-11-04 조회 3,322
15-11-04 조회 3,170
15-11-03 조회 3,052
15-11-02 조회 3,011
15-11-02 조회 2,747
15-11-02 조회 2,815
15-10-31 조회 2,604
15-10-27 조회 2,880
15-10-23 조회 2,830
15-10-23 조회 2,868
15-10-19 조회 4,116
15-10-15 조회 3,617
15-08-03 조회 3,180
15-07-29 조회 3,036
15-07-12 조회 3,702
15-05-07 조회 5,057
15-05-06 조회 4,709
15-05-06 조회 5,516
15-04-04 조회 4,605
15-04-04 조회 4,131
15-04-01 조회 5,984
15-02-10 조회 4,612
15-01-31 조회 4,623
15-01-23 조회 4,246
14-12-30 조회 3,901
14-12-23 조회 4,008
14-12-02 조회 4,312
14-10-17 조회 4,741
14-10-17 조회 5,063
14-10-07 조회 4,443
14-10-07 조회 5,493
14-10-04 조회 4,914
14-09-24 조회 4,827
14-09-24 조회 4,786
14-09-24 조회 4,277
14-09-23 조회 4,106
14-09-22 조회 3,862
14-09-21 조회 4,517
14-09-21 조회 4,409
14-09-21 조회 3,969
14-09-20 조회 4,490
14-09-19 조회 4,223
14-09-19 조회 3,672
14-09-19 조회 4,399
14-09-19 조회 4,048
14-09-18 조회 3,846
14-09-18 조회 4,131
14-09-18 조회 4,521
14-09-18 조회 4,033
14-09-18 조회 4,066
14-09-18 조회 4,037
14-09-18 조회 4,251
14-09-18 조회 4,867
14-09-17 조회 4,029
14-09-15 조회 3,944
14-09-11 조회 4,242
14-08-26 조회 4,134
14-08-26 조회 3,792
14-08-26 조회 3,672
14-08-26 조회 4,268
14-08-26 조회 3,993
14-08-26 조회 3,907
14-08-26 조회 4,107
14-08-26 조회 3,946
14-08-26 조회 3,776
14-08-26 조회 3,983
14-08-26 조회 4,090
14-08-26 조회 4,072
14-08-26 조회 3,968
14-08-26 조회 3,848
14-08-26 조회 3,813
14-08-26 조회 4,079
14-08-26 조회 3,696
14-08-26 조회 3,832
14-08-26 조회 3,620