PHP實現簡單順序棧
棧與陣列:php陣列也有壓入壓出的方法array_push 和array_shift。是不是陣列就是棧資料結構?或者明明陣列就可完成,為何還要棧
解答:去全國各地都可以用雙腿走到,為何選擇火車飛機?陣列就是腿,棧就是火車飛機。首先不相等,其次棧可以讓我們集中精力去解決更加核心的業務需求。
簡單順序棧實現
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
|
class Data{
private $data ;
public function __construct( $data ){
$this ->data= $data ;
}
public function getData(){
return $this ->data;
}
} class Stack{
private $size ;
private $top ; //棧頂的標識
private $stack = array ();
public function __construct( $size ){
return $this ->Init_Stack( $size );
}
public function Init_Stack( $size ){
$this ->size= $size ;
$this ->top=-1; //這裡棧頂的位置元素
}
public function Empty_Stack(){
if ( $this ->top==-1) return 1;
else
return 0;
}
public function Full_Stack(){
if ( $this ->top<( $this ->size-1)) return 0;
else
return 1;
}
//入棧 //本來打算直接算入Data物件,後來試驗了下好像有個小問題,就是單例的問題吧,看來還是需要每次都新建一個 /** *@param $data class Data 的成員 * **/ public function Push_Stack( $data ){
if ( $this ->Full_Stack()) echo "棧滿了" ;
else
$this ->stack[++ $this ->top] = new Data( $data );
}
//出棧
public function Pop_Stack(){
if ( $this ->Empty_Stack()) echo "棧空無資料!" ;
else
unset( $this ->stack[ $this ->top--]);
}
//讀取棧頂元素
public function Top_Stack(){
return $this ->Empty_Stack()? "棧空無資料" : $this ->stack[ $this ->top]->getData();
/*return $this->Empty_Stack()?"棧空無資料!":$this->stack[$this->top]->getData(); */
}
} //測試 //$data1 =new Data(`hello`); $data1 = `mini` ;
$stock = new Stack(5);
$stock ->Push_Stack( `jack` );
$stock ->Push_Stack( $data1 );
$stock ->Push_Stack( $data1 );
$stock ->Push_Stack( $data1 );
$stock ->Empty_Stack();
$stock ->Pop_Stack();
$stock ->Pop_Stack();
$stock ->Pop_Stack();
//$stock->Pop_Stack(); ////$stock->Push_Stack(``); //$stock-> echo $stock ->Top_Stack();
?> |
關於迴圈連結串列和雙向連結串列,沒有再寫。順序儲存還是比較好理解。
補充關於棧的軟體應用:Word,PS,瀏覽器常用的撤銷或者後退
補充棧擁有線性表的所有特性:上面是可以補充進來幾個函式:DestroyStack(銷燬)ClearStack(清空)StackLength(長度)。所有函式只是一次演練,熟悉下思路,下次寫任何業務邏輯,符合需要的話可以直接使用該思想
本文轉自 jackdongting 51CTO部落格,原文連結:http://blog.51cto.com/10725691/1948667
相關文章
- 順序棧的實現方式
- 順序審批流的簡單程式碼實現
- 順序棧與鏈式棧的圖解與實現圖解
- 棧,佇列,優先順序佇列簡單介面使用佇列
- python實現基本資料結構第二篇(順序棧、鏈棧,順序隊、鏈隊)Python資料結構
- 順序棧————遍歷、出棧、入棧
- 【資料結構】堆疊(順序棧、鏈棧)的JAVA程式碼實現資料結構Java
- C語言資料結構:順序棧的建立、出入棧,以及使用順序棧實現十進位制轉十六進位制C語言資料結構
- 棧1: 順序儲存
- java實現棧的簡單操作Java
- 順序表的實現
- Java實現順序表Java
- 演算法題———————輸入棧的入棧順序和出棧順序判斷是否合理演算法
- php與資料庫連線如何實現資料的順序和倒序PHP資料庫
- DS順序表--類實現
- PHP 實現簡單阻塞分散式鎖PHP分散式
- php實現一個簡單的socketPHP
- PHP中foreach讀取順序PHP
- Java實現一個棧就這麼簡單Java
- 順序表實現二分排序排序
- 資料結構:棧的基本概念、順序棧、共享棧以及鏈棧資料結構
- 線性表的使用——順序實現
- @資料結構C/C++版(5)《棧的順序儲存結構以及進棧和出棧操作的實現》資料結構C++
- 延時 (遲) 操作的 PHP 簡單實現PHP
- HTML、JavaScript、PHP、 MySQL 學習順序HTMLJavaScriptPHPMySql
- 資料結構 順序棧(c語言)資料結構C語言
- 最簡單的C程式設計--順序程式設計C程式程式設計
- 順序賦值的方式實現流水燈賦值
- C/C++多引數函式引數的計算順序與壓棧順序C++函式
- 資料結構實驗一:順序表的建立與操作實現、順序表實現約瑟夫環問題資料結構
- 關於 i=i++ 問題、入棧順序
- 棧是按照順序且連續儲存值
- php名稱空間的呼叫順序PHP
- 藍橋杯-外賣店優先順序(簡單寫法)
- 資料結構之php實現棧資料結構PHP
- 線性表-順序表C語言實現C語言
- 多執行緒實現順序迴圈列印執行緒
- C++:用棧實現反轉連結串列,超簡單!C++
- 技術卡片 - PHP 鏈式呼叫的簡單實現PHP