[알고리즘] 단순 연결 리스트를 이용한 스택(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 

*/

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

프로그램

+
제목 글쓴이 날짜 조회
11년 전 조회 2,632
11년 전 조회 2,854
11년 전 조회 1,239
11년 전 조회 2,108
11년 전 조회 1,626
11년 전 조회 4,247
11년 전 조회 2,161
11년 전 조회 2,069
11년 전 조회 2,329
11년 전 조회 4,292
11년 전 조회 4,227
11년 전 조회 4,026
11년 전 조회 1,712
11년 전 조회 4,086
11년 전 조회 3,349
11년 전 조회 3,830
11년 전 조회 1,345
11년 전 조회 3,152
11년 전 조회 3,136
11년 전 조회 3,192
11년 전 조회 2,187
11년 전 조회 2,661
11년 전 조회 1,971
11년 전 조회 1,764
11년 전 조회 2,384
11년 전 조회 1,694
11년 전 조회 4,564
11년 전 조회 4,465
11년 전 조회 2,008
11년 전 조회 3,220
11년 전 조회 1,621
11년 전 조회 2,434
11년 전 조회 4,027
11년 전 조회 4,354
11년 전 조회 5,257
11년 전 조회 1,631
11년 전 조회 2,192
11년 전 조회 3,596
11년 전 조회 1,792
11년 전 조회 1,808
11년 전 조회 2,372
11년 전 조회 1,686
11년 전 조회 2,906
11년 전 조회 2,422
11년 전 조회 4,484
11년 전 조회 2,932
11년 전 조회 5,193
11년 전 조회 2,003
11년 전 조회 1,890
11년 전 조회 2,534
11년 전 조회 2,504
11년 전 조회 2,082
11년 전 조회 1,670
11년 전 조회 2,337
11년 전 조회 1,847
11년 전 조회 1,832
11년 전 조회 2,029
11년 전 조회 1,962
11년 전 조회 1,575
11년 전 조회 2,776
11년 전 조회 2,746
11년 전 조회 3,887
11년 전 조회 1,904
11년 전 조회 1,651
11년 전 조회 1,633
11년 전 조회 3,573
11년 전 조회 1,752
11년 전 조회 2,085
11년 전 조회 1,627
11년 전 조회 2,256
11년 전 조회 2,239
11년 전 조회 1,632
11년 전 조회 1,819
11년 전 조회 1,659
11년 전 조회 1,621
11년 전 조회 2,294
11년 전 조회 1,737
11년 전 조회 1,653
11년 전 조회 1,802
11년 전 조회 1,776
11년 전 조회 1,479
11년 전 조회 1,677
11년 전 조회 2,061
11년 전 조회 1,739
11년 전 조회 1,967
11년 전 조회 1,720
11년 전 조회 1,663
11년 전 조회 1,910
11년 전 조회 1,654
11년 전 조회 1,655
11년 전 조회 1,725
11년 전 조회 2,628
11년 전 조회 1,689
11년 전 조회 1,698
11년 전 조회 1,472
11년 전 조회 1,949
11년 전 조회 1,684
11년 전 조회 1,493
11년 전 조회 1,942
11년 전 조회 2,151