PHP 는 양 방향 링크, 스 택 을 실현 합 니 다.

21437 단어 양 방향 링크
초기 에 PHP 가 단 방향 링크 를 실현 하고 정렬 단 방향 링크 를 실현 하 는 글 을 썼 습 니 다. 전송 문: http://www.cnblogs.com/yydcdut/p/3777760.html.쌍방 향 체인 시 계 를 썼 으 니 다시 꺼 내 서 말 해라. http://www.cnblogs.com/yydcdut/p/3782661.html
이번 에는 양 방향 링크 와 스 택 의 실현 을 공유 하 겠 습 니 다.코드 는 이전에 쓴 것 이지 만 PHP 가 쓴 이 코드 들 은 쉽게 알 아 볼 수 있 습 니 다!
양 방향 링크                                                                                      
<?php

        //    

        class Hero

        {

            public $pre=null;//   

            public $no;//  

            public $name;//  

            public $next=null;//   

            

            /**

            *    ,     

            */

            public function __construct($no='',$name='')

            {

                $this->no=$no;

                $this->name=$name;

            }

            /**

            *  

            */

            static public function addHero($head,$hero)

            {

                $cur = $head;

                $isExist=false;

                //            

                if($cur->next==null)

                {

                    $cur->next=$hero;

                    $hero->pre=$cur;

                }

                else

                {

                    //       ,       

                    //                   

                    while($cur->next!=null)

                    {

                        if($cur->next->no > $hero->no)

                        {//

                            break;

                        }

                        else if($cur->next->no == $hero->no)

                        {//

                            $isExist=true;

                            echo "<br>         ";

                        }

                        $cur=$cur->next;

                    }

                    if(!$isExist)

                    {//

                        if($cur->next!=null)

                        {$hero->next=$cur->next;}

                        $hero->pre=$cur;

                        if($cur->next!=null)

                        {$hero->next->pre=$hero;}

                        $cur->next=$hero;            

                    }

                }

            }

            //  

            static public function showHero($head)

            {

                $cur=$head;

                while($cur->next!=null)

                {

                    echo "<br>  :".$cur->next->no."  :".$cur->next->name;

                    $cur=$cur->next;

                }

            }        

            static public function delHero($head,$herono)

            {

                $cur=$head;

                $isFind=false;

                while($cur!=null)

                {

                    if($cur->no==$herono)

                    {

                        $isFind=true;

                        break;

                    }

                    //   

                    $cur=$cur->next;

                }

                if($isFind)

                {

                    if($cur->next!=null)

                    {$cur->next_pre=$cur->pre;}

                    $cur->pre->next=$cur->next;

                }

                else

                {echo "<br>      ";}            

            }

        }

        $head = new Hero();

        $hero1 = new Hero(1,'1111');

        $hero3 = new Hero(3,'3333');

        $hero2 = new Hero(2,'2222');

        Hero::addHero($head,$hero1);

        Hero::addHero($head,$hero3);

        Hero::addHero($head,$hero2);

        Hero::showHero($head);

        Hero::delHero($head,2);

        Hero::showHero($head);

?>

양 방향 링크 의 삽입 작업 설명도:
if($cur->next!=null)

    $hero->next=$cur->next;

$hero->pre=$cur;

 if($cur->next!=null)

    $hero->next->pre=$hero;

$cur->next=$hero;

 
QQ截图20140706152241
작업 설명도 삭제:
if($cur->next!=null)

    $cur->next->pre=$cur->pre;

$cur->pre->next=$cur->next;

 
QQ截图20140706152857
창고.                                                                                              
<?php



    class myStack

    {

        private $top=-1;

        private $maxSize=5;

        private $stack=array();

        public function push($val)

        {

            if($this->top == $this->maxSize)

            {

                echo "<br>    ";

            }

            $this->top++;

            $this->stack[$this->top]=$val;

        }

        

        public function showStack()

        {

            if($this->top==-1)

            {

                echo "<br>   !";

                return ;

            }

            for($i=$this->top;$i>-1;$i--)

            {

                echo "<br>stack[".$i."]=".$this->stack[$i];

            }

        }

        

        public function pop()

        {

            if($this->top==-1)

            {

                echo "<br>   !";

                return ;

            }

            

            $val=$this->stack[$this->top];

            $this->top--;

            echo "<br>  ".$val;

        }

    }



    $mystack = new myStack;

    $mystack->push('111');

    $mystack->push('222');

    $mystack->showStack();

    $mystack->pop();

    $mystack->pop();

?>

PHP实现双向链表、栈
스 택 (Stack): 표 의 한 끝 에 삽입 과 삭제 작업 을 제한 하 는 선형 표 입 니 다.후진 선 출 LIFO (Last In First Out) 또는 선진 후 FILO (First In Last Out) 선형 표 라 고도 부른다.
스 택 은 컴퓨터 의 실현 에 여러 가지 방식 이 있 습 니 다.
  • 하 드 스 택: CPU 의 일부 레지스터 그룹 이나 유사 한 하드웨어 또는 메모리 의 특수 영역 을 이용 하여 이 루어 집 니 다.이런 종류의 스 택 은 용량 이 제한 되 어 있 지만 속도 가 매우 빠르다.
  • 소프트 스 택: 이런 스 택 은 주로 메모리 에서 이 루어 집 니 다.창고 용량 이 매우 크다.실현 방식 에 있어 동태 방식 과 정태 방식 두 가지
  • 가 있다.
    스 택 맨 위 (Top): 삽입, 삭제 작업 의 한 끝 을 허용 하고 표 끝 이 라 고도 합 니 다.창고 꼭대기 포인터 (top) 로 창고 꼭대기 요 소 를 표시 합 니 다.
    창고 바닥 (Bottom): 고정 단 이 며 표 두 라 고도 부른다.
    빈 스 택: 표 에 요소 가 없 을 때 빈 스 택 이 라 고 합 니 다.
    창고 의 체인 식 저장 구 조 를 체인 창고 라 고 하 는데 연산 이 제 한 된 단일 체인 표 이다.삽입 과 삭제 작업 은 표 머리 위치 에서 만 할 수 있 습 니 다.따라서 체인 스 택 은 싱글 체인 시계 처럼 머리 결 점 을 추가 할 필요 가 없습니다. 스 택 꼭대기 지침 top 은 바로 링크 의 머리 지침 입 니 다.
    물론 phop 의 배열 API 에는 push 와 pop 함수 가 들 어 있 습 니 다.
    나 는 천 왕 개 지 호의 분할 선 이다.                                                                
    전송 문: http://www.cnblogs.com/yydcdut/p/3777760.html
     
     
     
    전재 출처 를 밝 혀 주 십시오: 전재 출처 를 밝 혀 주 십시오: http://www.cnblogs.com/yydcdut

    좋은 웹페이지 즐겨찾기