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

· 2014-09-24 (수) 18:35:58 · 4670 · 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건
+
제목 글쓴이 날짜 조회
15-11-20 조회 2,433
15-11-20 조회 2,437
15-11-20 조회 2,536
15-11-18 조회 2,552
15-11-18 조회 2,601
15-11-18 조회 2,525
15-11-17 조회 2,772
15-11-17 조회 2,533
15-11-17 조회 2,483
15-11-16 조회 2,551
15-11-16 조회 2,532
15-11-16 조회 2,728
15-11-15 조회 2,728
15-11-15 조회 2,538
15-11-15 조회 2,651
15-11-09 조회 2,826
15-11-09 조회 2,616
15-11-09 조회 2,683
15-11-06 조회 3,263
15-11-05 조회 2,698
15-11-05 조회 2,627
15-11-05 조회 2,740
15-11-04 조회 2,691
15-11-04 조회 2,655
15-11-04 조회 2,662
15-11-04 조회 2,944
15-11-04 조회 2,736
15-11-03 조회 2,749
15-11-02 조회 2,767
15-11-02 조회 2,555
15-11-02 조회 2,581
15-10-31 조회 2,496
15-10-27 조회 2,745
15-10-23 조회 2,656
15-10-23 조회 2,703
15-10-19 조회 3,804
15-10-15 조회 3,414
15-08-03 조회 3,090
15-07-29 조회 2,913
15-07-12 조회 3,354
15-05-07 조회 4,965
15-05-06 조회 4,597
15-05-06 조회 5,290
15-04-04 조회 4,390
15-04-04 조회 4,013
15-04-01 조회 5,631
15-02-10 조회 4,376
15-01-31 조회 4,392
15-01-23 조회 4,055
14-12-30 조회 3,600
14-12-23 조회 3,799
14-12-02 조회 4,176
14-10-17 조회 4,613
14-10-17 조회 4,762
14-10-07 조회 4,103
14-10-07 조회 5,276
14-10-04 조회 4,386
14-09-24 조회 4,671
14-09-24 조회 4,633
14-09-24 조회 4,122
14-09-23 조회 3,890
14-09-22 조회 3,593
14-09-21 조회 3,991
14-09-21 조회 4,221
14-09-21 조회 3,688
14-09-20 조회 4,250
14-09-19 조회 3,824
14-09-19 조회 3,476
14-09-19 조회 4,002
14-09-19 조회 3,690
14-09-18 조회 3,503
14-09-18 조회 3,949
14-09-18 조회 4,245
14-09-18 조회 3,858
14-09-18 조회 3,797
14-09-18 조회 3,840
14-09-18 조회 3,925
14-09-18 조회 4,670
14-09-17 조회 3,705
14-09-15 조회 3,788
14-09-11 조회 4,067
14-08-26 조회 3,965
14-08-26 조회 3,675
14-08-26 조회 3,422
14-08-26 조회 3,935
14-08-26 조회 3,812
14-08-26 조회 3,663
14-08-26 조회 3,776
14-08-26 조회 3,846
14-08-26 조회 3,630
14-08-26 조회 3,837
14-08-26 조회 3,809
14-08-26 조회 3,790
14-08-26 조회 3,849
14-08-26 조회 3,591
14-08-26 조회 3,597
14-08-26 조회 3,786
14-08-26 조회 3,479
14-08-26 조회 3,553
14-08-26 조회 3,352