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

· 2014-09-24 (수) 18:35:58 · 4647 · 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,418
15-11-20 조회 2,423
15-11-20 조회 2,516
15-11-18 조회 2,540
15-11-18 조회 2,589
15-11-18 조회 2,500
15-11-17 조회 2,754
15-11-17 조회 2,525
15-11-17 조회 2,473
15-11-16 조회 2,535
15-11-16 조회 2,520
15-11-16 조회 2,686
15-11-15 조회 2,716
15-11-15 조회 2,520
15-11-15 조회 2,636
15-11-09 조회 2,805
15-11-09 조회 2,595
15-11-09 조회 2,663
15-11-06 조회 3,245
15-11-05 조회 2,680
15-11-05 조회 2,617
15-11-05 조회 2,726
15-11-04 조회 2,678
15-11-04 조회 2,635
15-11-04 조회 2,642
15-11-04 조회 2,920
15-11-04 조회 2,719
15-11-03 조회 2,744
15-11-02 조회 2,747
15-11-02 조회 2,535
15-11-02 조회 2,561
15-10-31 조회 2,485
15-10-27 조회 2,721
15-10-23 조회 2,638
15-10-23 조회 2,684
15-10-19 조회 3,784
15-10-15 조회 3,392
15-08-03 조회 3,085
15-07-29 조회 2,903
15-07-12 조회 3,340
15-05-07 조회 4,958
15-05-06 조회 4,594
15-05-06 조회 5,268
15-04-04 조회 4,380
15-04-04 조회 3,996
15-04-01 조회 5,619
15-02-10 조회 4,359
15-01-31 조회 4,373
15-01-23 조회 4,039
14-12-30 조회 3,580
14-12-23 조회 3,780
14-12-02 조회 4,172
14-10-17 조회 4,601
14-10-17 조회 4,747
14-10-07 조회 4,089
14-10-07 조회 5,241
14-10-04 조회 4,372
14-09-24 조회 4,648
14-09-24 조회 4,608
14-09-24 조회 4,106
14-09-23 조회 3,860
14-09-22 조회 3,579
14-09-21 조회 3,982
14-09-21 조회 4,201
14-09-21 조회 3,667
14-09-20 조회 4,225
14-09-19 조회 3,814
14-09-19 조회 3,457
14-09-19 조회 3,988
14-09-19 조회 3,683
14-09-18 조회 3,486
14-09-18 조회 3,934
14-09-18 조회 4,228
14-09-18 조회 3,853
14-09-18 조회 3,775
14-09-18 조회 3,813
14-09-18 조회 3,906
14-09-18 조회 4,650
14-09-17 조회 3,689
14-09-15 조회 3,773
14-09-11 조회 4,046
14-08-26 조회 3,939
14-08-26 조회 3,661
14-08-26 조회 3,401
14-08-26 조회 3,915
14-08-26 조회 3,803
14-08-26 조회 3,648
14-08-26 조회 3,762
14-08-26 조회 3,836
14-08-26 조회 3,622
14-08-26 조회 3,830
14-08-26 조회 3,794
14-08-26 조회 3,771
14-08-26 조회 3,840
14-08-26 조회 3,574
14-08-26 조회 3,576
14-08-26 조회 3,764
14-08-26 조회 3,463
14-08-26 조회 3,538
14-08-26 조회 3,337