슈

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

· 2014-09-24 (수) 18:35:58 · 4732 · 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,021
14-10-25 조회 6,142
14-10-25 조회 3,677
14-10-25 조회 3,824
14-10-24 조회 3,719
14-10-23 조회 4,418
14-10-22 조회 3,567
14-10-22 조회 4,231
14-10-22 조회 7,051
14-10-22 조회 4,766
14-10-22 조회 4,703
14-10-22 조회 8,839
14-10-19 조회 4,639
14-10-18 조회 5,489
14-10-17 조회 5,081
14-10-17 조회 3,861
14-10-17 조회 5,860
14-10-17 조회 5,315
14-10-17 조회 8,739
14-10-17 조회 6,315
14-10-17 조회 4,642
14-10-17 조회 4,810
14-10-14 조회 3,214
14-10-14 조회 4,115
14-10-13 조회 3,682
14-10-13 조회 6,305
14-10-13 조회 4,104
14-10-13 조회 4,129
14-10-13 조회 4,339
14-10-11 조회 6,521
14-10-11 조회 6,396
14-10-11 조회 6,152
14-10-10 조회 3,790
14-10-10 조회 6,233
14-10-10 조회 5,527
14-10-10 조회 5,913
14-10-10 조회 3,384
14-10-10 조회 5,253
14-10-10 조회 5,260
14-10-10 조회 5,328
14-10-10 조회 4,297
14-10-10 조회 4,794
14-10-10 조회 4,088
14-10-10 조회 3,901
14-10-08 조회 4,484
14-10-08 조회 3,617
14-10-08 조회 6,805
14-10-07 조회 6,042
14-10-07 조회 4,152
14-10-07 조회 5,383
14-10-07 조회 3,600
14-10-07 조회 4,545
14-10-07 조회 6,219
14-10-06 조회 6,586
14-10-06 조회 7,371
14-10-05 조회 3,586
14-10-04 조회 4,490
14-10-03 조회 5,873
14-10-02 조회 3,773
14-09-29 조회 3,967
14-09-29 조회 4,433
14-09-28 조회 3,757
14-09-27 조회 5,083
14-09-27 조회 4,527
14-09-26 조회 6,587
14-09-26 조회 4,981
14-09-25 조회 7,321
14-09-25 조회 3,954
14-09-25 조회 3,944
14-09-24 조회 4,733
14-09-24 조회 4,704
14-09-24 조회 4,174
14-09-24 조회 3,761
14-09-24 조회 4,385
14-09-24 조회 3,829
14-09-23 조회 4,016
14-09-23 조회 4,162
14-09-23 조회 3,901
14-09-22 조회 3,666
14-09-22 조회 4,713
14-09-22 조회 4,746
14-09-22 조회 5,973
14-09-22 조회 3,970
14-09-22 조회 3,620
14-09-22 조회 3,684
14-09-21 조회 5,637
14-09-21 조회 4,061
14-09-21 조회 4,172
14-09-21 조회 3,684
14-09-21 조회 4,268
14-09-21 조회 4,191
14-09-21 조회 3,790
14-09-20 조회 3,851
14-09-20 조회 3,694
14-09-20 조회 3,607
14-09-20 조회 4,365
14-09-20 조회 3,786
14-09-19 조회 3,709
14-09-19 조회 3,859
14-09-19 조회 3,850