這次再來分享一下實現雙向鍊錶和棧的實現。**雖然是以前寫的了,但是發現php寫的這些**很容易看懂!
雙向鍊錶
classhero
elseelse if($cur->next->no == $hero->no)
$cur=$cur->next;
}if(!$i***ist)
$hero->pre=$cur;if($cur->next!=null)
$cur->next=$hero;
}//遍歷
static public function showhero($head)
static public function delhero($head,$herono)
//繼續找
$cur=$cur->next;
}if($isfind)
$cur->pre->next=$cur->next;
}else
}$head = newhero();$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)$cur->next->pre=$cur->pre;$cur->pre->next=$cur->next;
棧$this->top++;$this->stack[$this->top]=$val;
}public functionshowstack()
for($i=$this->top;$i>-1;$i--)
public functionpop()
$val=$this->stack[$this->top];$this->top--;echo "
彈出".$val;
}$mystack = newmystack;$mystack->push('111');$mystack->push('222');$mystack->showstack();$mystack->pop();$mystack->pop();?>
棧(stack):是限制在表的一端進行插入和刪除操作的線性表。又稱為後進先出lifo (last in first out)或先進後出filo (first in last out)線性表。
棧在計算機的實現有多種方式:
硬堆疊:利用cpu中的某些暫存器組或類似的硬體或使用記憶體的特殊區域來實現。這類堆疊容量有限,但速度很快;
軟堆疊:這類堆疊主要在記憶體中實現。堆疊容量可以達到很大。在實現方式上,又有動態方式和靜態方式兩種
棧頂(top):允許進行插入、刪除操作的一端,又稱為表尾。用棧頂指標(top)來指示棧頂元素。
棧底(bottom):是固定端,又稱為表頭。
空棧:當表中沒有元素時稱為空棧。
棧的鏈式儲存結構稱為鏈棧,是運算受限的單鏈表。其插入和刪除操作只能在表頭位置上進行。因此,鏈棧沒有必要像單鏈表那樣附加頭結點,棧頂指標top就是鍊錶的頭指標。
當然,php中的陣列api裡面帶的有push和pop函式。
我是天王蓋地虎的分割線
mysql 雙向鍊錶 雙向鍊錶
雙向鍊錶是鍊錶變型,相比於單鏈表導航或者是向前和向後的兩種方式。以下是重要的術語來理解雙向鍊錶的概念 link 鍊錶的每個鏈路儲存資料稱為乙個元素。linkedlist linkedlist包含連線鏈結到名為首先第乙個鏈結,並稱為最後的最後乙個鏈結 last 雙向鍊錶表示 按照如上圖中所示,以下是要...
mysql儲存結構雙向鍊錶 資料庫的儲存結構
資料庫的儲存結構 資料庫的儲存結構是怎樣的?記錄是按照行儲存的,但是資料庫的讀取不是以行為單位,否則一次讀取只能處理一行,效率很低。因此資料庫,無論是讀一行,還是讀取多行,都是將這些行所在的頁進行載入。資料管理儲存空間的基本單位是頁 page 快速回顧一遍資料庫儲存結構 一頁可以儲存多個行記錄 ro...
mysql的引雙向鍊錶 雙向鍊錶
public classdoublelinkedlist else 新增至鍊錶尾 paramnode public voidaddlast doublenode node else 按照某屬性的順序新增 paramnode public voidaddbyorder doublenode node ...