ホームページ  >  記事  >  バックエンド開発  >  PHP は双方向リンク リストと stack_PHP チュートリアルを実装します

PHP は双方向リンク リストと stack_PHP チュートリアルを実装します

WBOY
WBOYオリジナル
2016-07-13 10:22:55835ブラウズ

PHP は双方向リンクリストとスタックを実装します

二重リンクリスト
コードをコピー
//二重リンクリスト
クラスヒーロー
{
public $pre=null;//pre ポインタ
public $no;//ランキング
public $name;//名前
public $next=null; //次のポインタ
/**
*コンストラクター、リンクされたリストの先頭を宣言します
*/
パブリック関数 __construct($no='',$name='')
{
$this->no=$no;
$this->name=$name;
}
/**
*
を挿入
*/
静的パブリック関数 addHero($head,$hero)
{
$cur = $head;
$isExist=false;
// 現在のリンク リストが空かどうかを判断します
{
$cur->next=$hero;
$hero->pre=$cur;
}
その他
{
「 」 ウェイ ウェイ ウェイ ウェイ アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト アウト オフ バックオフ ビヨンド ビヨンド mp' ' s
between - between後-間-間-i
//追加された場所を見つけます
while($cur->next!=null)
to から {// ランキング以上なら飛び出す
else if($cur->next->no == $hero->no)
より {// ランキングと同じ場合、この要素があることを意味します
エコー "< br>同じ番号を追加できません";
}
️ {//要素が存在しない場合は、挿入操作を実行します
{$hero->next=$cur->next;}
$hero->pre=$cur;
if($cur->next!=null)
{$hero->next->pre=$hero;}
$cur->next=$hero;            
}
}
}
//遍历
静的パブリック関数 showHero($head)
{
$cur=$head;
while($cur->next!=null)
{
echo "
编号:".$cur->next->no."名字:".$cur->next->name;
$cur=$cur->next;
}
}
静的パブリック関数 delHero($head,$herono)
{
$cur=$head;
$isFind=false;
while($cur!=null)
{
if($cur->no==$herono)
{
$isFind=true;
休憩;
}
//继续找
$cur=$cur->next;
}
if($isFind)
{
if($cur->next!=null)
{$cur->next_pre=$cur->pre;}
$cur->pre->next=$cur->next;
}
それ以外
{echo "
没有找到目标";}
}
}
$head = 新しいヒーロー();
$hero1 = 新しいヒーロー(1,'1111');
$hero3 = 新しいヒーロー(3,'3333');
$hero2 = 新しいヒーロー(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
スタック
コードをコピー
クラスmyStack
{
プライベート $top=-1;
プライベート $maxSize=5;
プライベート$stack=array();
パブリック関数プッシュ($val)
{
if($this->top == $this->maxSize)
{
echo "
すでにいっぱいです";
}
$this->top++;
$this->stack[$this->top]=$val;
}
パブリック関数 showStack()
{
{
echo "
スタックは空です!";
戻る ;
}
for($i=$this->top;$i>-1;$i--)
{
echo "
stack[".$i."]=".$this->stack[$i];
}
}
パブリック関数pop()
{
{
echo "
スタックは空です!";
戻る ;
}
$val=$this->stack[$this->top];
$this->top--;
echo "
ポップアップ".$val;
}
}
$mystack = 新しい myStack;
$mystack->push('111');
$mystack->push('222');
$mystack->showStack();
$mystack->pop();
$mystack->pop();
?>
コードをコピー
スタック: 挿入および削除操作をテーブルの一端に制限する線形テーブルです。 LIFO (Last In First Out) または FILO (First In Last Out) 線形テーブルとも呼ばれます。
コンピューターにスタックを実装するには、さまざまな方法があります:
ハードスタック: CPUまたは同様のハードウェアの特定のレジスタバンクを利用するか、特別なメモリ領域を使用して実装されます。このタイプのスタックは容量が限られていますが、高速です
ソフトスタック: このタイプのスタックは主にメモリ内に実装されます。スタック容量は非常に大きくなる可能性があります。実装方法としては、動的方式と静的方式の2種類があります
スタックの最上位: 挿入および削除操作が可能な端であり、テーブルの末尾とも呼ばれます。スタックの最上位要素を示すには、スタック トップ ポインタ (top) を使用します。
下: 固定端であり、ヘッダーとも呼ばれます。
空スタック: テーブルに要素がない場合、それは空スタックと呼ばれます。
スタックのリンクされたストレージ構造はリンク スタックと呼ばれ、操作が制限された単一リンク リストです。挿入および削除操作はヘッダー位置でのみ実行できます。したがって、単一リンク リストのように、リンク スタックにヘッド ノードを接続する必要はありません。スタック上の先頭ポインタがリンク リストの先頭ポインタになります。
もちろん、phpの配列APIにはpush関数とpop関数があります。

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/845432.html技術記事 PHP は二重リンク リストとスタック二重リンク リストを実装します。 copy code?php //二重リンク リスト class Hero { public $pre=null;//前のポインタ public $no;//ランキング public $name;//Name public $next= null;/ /後ろ指...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。