슈

[알고리즘] 단순 연결 리스트를 이용한 스택(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,520
15-11-20 조회 2,655
15-11-18 조회 2,810
15-11-18 조회 2,690
15-11-18 조회 2,677
15-11-17 조회 2,878
15-11-17 조회 2,636
15-11-17 조회 2,771
15-11-16 조회 2,652
15-11-16 조회 2,621
15-11-16 조회 2,810
15-11-15 조회 2,817
15-11-15 조회 2,683
15-11-15 조회 2,801
15-11-09 조회 2,988
15-11-09 조회 2,745
15-11-09 조회 2,788
15-11-06 조회 3,382
15-11-05 조회 2,865
15-11-05 조회 2,723
15-11-05 조회 2,848
15-11-04 조회 2,816
15-11-04 조회 2,869
15-11-04 조회 2,747
15-11-04 조회 3,319
15-11-04 조회 3,169
15-11-03 조회 3,051
15-11-02 조회 3,010
15-11-02 조회 2,745
15-11-02 조회 2,811
15-10-31 조회 2,604
15-10-27 조회 2,878
15-10-23 조회 2,830
15-10-23 조회 2,868
15-10-19 조회 4,111
15-10-15 조회 3,613
15-08-03 조회 3,179
15-07-29 조회 3,032
15-07-12 조회 3,700
15-05-07 조회 5,056
15-05-06 조회 4,707
15-05-06 조회 5,515
15-04-04 조회 4,603
15-04-04 조회 4,129
15-04-01 조회 5,983
15-02-10 조회 4,611
15-01-31 조회 4,619
15-01-23 조회 4,245
14-12-30 조회 3,900
14-12-23 조회 4,004
14-12-02 조회 4,310
14-10-17 조회 4,739
14-10-17 조회 5,061
14-10-07 조회 4,441
14-10-07 조회 5,492
14-10-04 조회 4,910
14-09-24 조회 4,824
14-09-24 조회 4,785
14-09-24 조회 4,274
14-09-23 조회 4,105
14-09-22 조회 3,861
14-09-21 조회 4,510
14-09-21 조회 4,408
14-09-21 조회 3,966
14-09-20 조회 4,490
14-09-19 조회 4,217
14-09-19 조회 3,668
14-09-19 조회 4,396
14-09-19 조회 4,047
14-09-18 조회 3,845
14-09-18 조회 4,128
14-09-18 조회 4,520
14-09-18 조회 4,033
14-09-18 조회 4,063
14-09-18 조회 4,036
14-09-18 조회 4,251
14-09-18 조회 4,865
14-09-17 조회 4,027
14-09-15 조회 3,942
14-09-11 조회 4,239
14-08-26 조회 4,132
14-08-26 조회 3,791
14-08-26 조회 3,670
14-08-26 조회 4,267
14-08-26 조회 3,991
14-08-26 조회 3,904
14-08-26 조회 4,106
14-08-26 조회 3,946
14-08-26 조회 3,775
14-08-26 조회 3,981
14-08-26 조회 4,089
14-08-26 조회 4,072
14-08-26 조회 3,964
14-08-26 조회 3,847
14-08-26 조회 3,812
14-08-26 조회 4,077
14-08-26 조회 3,694
14-08-26 조회 3,831
14-08-26 조회 3,619