PHP 는 양 방향 링크, 스 택 을 실현 합 니 다.
21437 단어 양 방향 링크
이번 에는 양 방향 링크 와 스 택 의 실현 을 공유 하 겠 습 니 다.코드 는 이전에 쓴 것 이지 만 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;
작업 설명도 삭제:
if($cur->next!=null)
$cur->next->pre=$cur->pre;
$cur->pre->next=$cur->next;
창고.
<?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();
?>
스 택 (Stack): 표 의 한 끝 에 삽입 과 삭제 작업 을 제한 하 는 선형 표 입 니 다.후진 선 출 LIFO (Last In First Out) 또는 선진 후 FILO (First In Last Out) 선형 표 라 고도 부른다.
스 택 은 컴퓨터 의 실현 에 여러 가지 방식 이 있 습 니 다.
스 택 맨 위 (Top): 삽입, 삭제 작업 의 한 끝 을 허용 하고 표 끝 이 라 고도 합 니 다.창고 꼭대기 포인터 (top) 로 창고 꼭대기 요 소 를 표시 합 니 다.
창고 바닥 (Bottom): 고정 단 이 며 표 두 라 고도 부른다.
빈 스 택: 표 에 요소 가 없 을 때 빈 스 택 이 라 고 합 니 다.
창고 의 체인 식 저장 구 조 를 체인 창고 라 고 하 는데 연산 이 제 한 된 단일 체인 표 이다.삽입 과 삭제 작업 은 표 머리 위치 에서 만 할 수 있 습 니 다.따라서 체인 스 택 은 싱글 체인 시계 처럼 머리 결 점 을 추가 할 필요 가 없습니다. 스 택 꼭대기 지침 top 은 바로 링크 의 머리 지침 입 니 다.
물론 phop 의 배열 API 에는 push 와 pop 함수 가 들 어 있 습 니 다.
나 는 천 왕 개 지 호의 분할 선 이다.
전송 문: http://www.cnblogs.com/yydcdut/p/3777760.html
전재 출처 를 밝 혀 주 십시오: 전재 출처 를 밝 혀 주 십시오: http://www.cnblogs.com/yydcdut
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
선형 표 의 단일 체인 표 학습 소결 (초학 데이터 구조 필수)몇 시간 이 걸 렸 고 모든 기본 작업 을 포함 하여 전체 과정 을 상세 하 게 계획 했다.질문 있 으 시 면 아래 에 댓 글로 남 겨 주세요. 추가: 순환 링크 의 병합 알고리즘 양 방향 링크 삽입 및 삭제 정적 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.