91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

數據結構之棧——鏈式存儲結構(php代碼實現)

發布時間:2020-07-18 23:39:37 來源:網絡 閱讀:953 作者:great_yonchin 欄目:web開發
<?php
/**
    1. DestroyStack(): 棧的銷毀
    2. ClearStack(): 將棧置為空棧
    3. StackEmpty(): 判斷棧是否為空
    4. StackLength(): 返回棧的長度
    5. GetTop(): 取得棧頂的元素
    6. Push(): 插入新的棧頂元素
    7. Pop(): 刪除棧頂元素
    8. StackTraverse(): 遍歷棧元素
 */
class LNode{
    public $data;
    public $next;
    public function __construct($data=null){
        $this->data=$data;
        $this->next=null;
    }
}
class LinkStack{
    private  $top;
    //用于指向棧頂結點,也就是第一個結點。相對于頭指針.此時或許有人有疑問了,你之前不是說this代表頭指針嗎?為什么現在有變成top為頭指針了呢?
// 答:
//   之所以之前this代表頭指針,是因為它指向了一個和其它結點一樣的結點——頭結點(實例化后的對象即為頭結點,因為其初始化的數據域自始至終都為null)。而此處的this并沒有指向和其它結點一樣的結點(即頭結點),也不指向第一個結點,另外,因為對沒有頭結點的鏈表的操作(比如清空鏈表),需要判斷當前的指針是否為空,而此時若是this指向第一個結點,那么這個鏈表將永遠不會為空(因為this代表兩個一個實例化的對象,始終是一個內存地址)。所以此處的this不是且不能是頭指針。因而需要單獨指定一個成員屬性top,用于指向第一個結點,因為其可以為null,所以top就是我們定義的頭指針。此處的關鍵點在于,是否在類中要聲明和結點類(即LNode)一樣的成員屬性,若一樣則就是包含頭結點的鏈式結構,若是僅包含一個指針域的屬性則就是不包含頭結點的鏈式結構。由此,我們可以知道,關于一些邊界判斷的條件,是由我們編程者自己來決定的,不需要拘泥于形式,只要滿足操作要求即可。


    private $length;//用于指定鏈棧的長度
    public function __construct(){
        $this->top=null;
        $this->length=0;
    }
    //銷毀鏈棧
    public function DestroyStack(){
        while($this->top){
            $p=$this->top->next;
            unset($this->top);
            $this->top=$p;
        }
        $this->length=0;
    }

    //清空鏈棧
    public function ClearStack(){
        $p=$this->top;
        while($p){
            $q=$p->next;
            unset($p);
            $p=$q;
        }
        $this->top=null;
        $this->length=0;
    }

    //鏈棧是否為空
    public function StackEmpty(){
        if($this->top==null){
            return 'Null';
        }else{
            return 'NO Null';
        }
    }

    //鏈棧的長度
    public function StackLength(){
        return $this->length;
    }

    //取得棧頂的元素
    public function GetTop(){
        if($this->top!=null){
            return $this->top->data;
        }
    }

    //插入新的棧頂結點
    public function Push(){
        $node=new LNode(mt_rand(10,20));
        $node->next=$this->top;
        $this->top=$node;
        $this->length++;
    }

    //刪除棧頂元素
    public function Pop(){
        if($this->top!=null){
            $p=$this->top->next;
            unset($this->top);
            $this->top=$p;
            $this->length--;
        }
    }

    //遍歷棧元素
    public function StackTraverse(){
        $arr=array();
        if($this->top !=null){
            $p=$this->top;
            while($p){
                $arr[]=$p->data;
                $p=$p->next;
            }
        }
        return $arr;
    }
}


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

稷山县| 台南市| 靖边县| 临沂市| 凤阳县| 奉贤区| 潼关县| 兴国县| 乌恰县| 赣州市| 武威市| 龙井市| 米林县| 洮南市| 武汉市| 米脂县| 清苑县| 鞍山市| 闽清县| 诸城市| 西华县| 句容市| 镇江市| 五台县| 浪卡子县| 新和县| 武定县| 友谊县| 高雄市| 六枝特区| 汉寿县| 兴安盟| 左贡县| 清流县| 紫阳县| 招远市| 博客| 凤阳县| 丘北县| 禄劝| 金湖县|