슈

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

· 2014-09-24 (수) 18:35:58 · 4786 · 1

/*

연결 리스트, 링크드 리스트(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 

*/

|

댓글 1개

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

프로그램

8,188건
+
제목 글쓴이 날짜 조회
14-10-25 조회 5,104
14-10-25 조회 6,291
14-10-25 조회 3,727
14-10-25 조회 3,868
14-10-24 조회 3,844
14-10-23 조회 4,457
14-10-22 조회 3,599
14-10-22 조회 4,265
14-10-22 조회 7,115
14-10-22 조회 4,827
14-10-22 조회 4,773
14-10-22 조회 8,909
14-10-19 조회 4,695
14-10-18 조회 5,646
14-10-17 조회 5,142
14-10-17 조회 3,939
14-10-17 조회 6,021
14-10-17 조회 5,388
14-10-17 조회 8,836
14-10-17 조회 6,407
14-10-17 조회 4,688
14-10-17 조회 5,002
14-10-14 조회 3,262
14-10-14 조회 4,183
14-10-13 조회 3,743
14-10-13 조회 6,385
14-10-13 조회 4,327
14-10-13 조회 4,217
14-10-13 조회 4,419
14-10-11 조회 6,582
14-10-11 조회 6,500
14-10-11 조회 6,378
14-10-10 조회 3,882
14-10-10 조회 6,342
14-10-10 조회 5,623
14-10-10 조회 6,190
14-10-10 조회 3,453
14-10-10 조회 5,349
14-10-10 조회 5,355
14-10-10 조회 5,455
14-10-10 조회 4,372
14-10-10 조회 4,863
14-10-10 조회 4,152
14-10-10 조회 4,012
14-10-08 조회 4,535
14-10-08 조회 3,657
14-10-08 조회 6,878
14-10-07 조회 6,117
14-10-07 조회 4,287
14-10-07 조회 5,450
14-10-07 조회 3,648
14-10-07 조회 4,643
14-10-07 조회 6,293
14-10-06 조회 6,652
14-10-06 조회 7,437
14-10-05 조회 3,646
14-10-04 조회 4,730
14-10-03 조회 6,078
14-10-02 조회 3,826
14-09-29 조회 4,028
14-09-29 조회 4,484
14-09-28 조회 3,800
14-09-27 조회 5,138
14-09-27 조회 4,600
14-09-26 조회 6,667
14-09-26 조회 5,096
14-09-25 조회 7,447
14-09-25 조회 3,987
14-09-25 조회 3,991
14-09-24 조회 4,787
14-09-24 조회 4,748
14-09-24 조회 4,227
14-09-24 조회 3,808
14-09-24 조회 4,420
14-09-24 조회 3,873
14-09-23 조회 4,070
14-09-23 조회 4,193
14-09-23 조회 3,950
14-09-22 조회 3,828
14-09-22 조회 4,743
14-09-22 조회 4,843
14-09-22 조회 6,065
14-09-22 조회 4,037
14-09-22 조회 3,716
14-09-22 조회 3,770
14-09-21 조회 5,716
14-09-21 조회 4,332
14-09-21 조회 4,301
14-09-21 조회 3,779
14-09-21 조회 4,348
14-09-21 조회 4,238
14-09-21 조회 3,887
14-09-20 조회 3,895
14-09-20 조회 3,776
14-09-20 조회 3,686
14-09-20 조회 4,432
14-09-20 조회 3,871
14-09-19 조회 3,814
14-09-19 조회 3,961
14-09-19 조회 4,143