摘要:堆棧算法引子棧是計算機術語中比較重要的概念,實質上棧就是一段內存區域,但是棧滿足一定的特性,那就是只有一個口,具有先入后出的特性,這種特性在計算機中有很廣泛的運用。
/** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email 1185087164@qq.com */引子
????棧是計算機術語中比較重要的概念,實質上棧就是一段內存區域,但是棧滿足一定的特性,那就是只有一個口,具有先入后出的特性,這種特性在計算機中有很廣泛的運用。其中幾個典型的運行如下:
計算機四則運算
樹的遞歸遍歷(所以樹和棧有緊密的聯系)
歷史記錄(文件流)
路徑追蹤
參看:棧的經典運用
一、默寫棧結構默寫會讓你記憶更深刻,同時也會鍛煉抽象的邏輯思維,一邊看不懂,就多看幾遍, 再查一查相關資料,應該問題不大,你甚至可以找張紙默寫一下。
/** * InitStack 初始化棧(單棧) * 聲明一個類,構造空數組、數組長度、棧頂指針3個屬性 typedef int SElememtType //構造一個棧結構數據類型實際可認為為整形 typedef Struct{ SElememtType data[MaxSize] //聲明棧空間 int top //聲明棧頂指針 }Stack; */ /** * Push 入棧(單棧) * 實例化棧,并注入S,判斷,先后移棧頂指針,再新增棧頂元素 Status Push(Stack *S, int e){ // 判斷是否為滿棧 if(S->top == n-1){ return error; //滿棧 } S->top = S->top+1; //棧頂元素往后移動一位 S->data[S->top] = e;//賦值給棧頂元素 return ok; } */ /** * Pop 岀棧(單棧) * 實例化棧,并注入S,判斷,先移除棧頂元素,再前移棧頂指針 Status Pop(Stack *S, int e){ if(S->top == -1){ return error; //空棧 } e = S->data[S->top]; unset(e) //將棧頂元素移出(銷毀) S->top = S->top -1; //棧頂元素向前移動一位 } */ /** * ClearStack 清空棧(單棧) * 當棧存在且非空,遍歷棧頂元素并銷毀 Status ClearStack(){ if(S->top == -1){ return error; //空棧 } for(S->top;S->top>1;S->top--){ unset(S->data[S->top]); } } */二、棧結構基本實現
top == $this->MaxSize){ return error; } /* 先后移棧頂指針后賦值 */ $this->top = ++$this->top; $this->arr[$this->top] = $e; /* 輸出 */ echo "棧頂指針現在所屬位置".$this->top."--"; echo "$e 入棧成功"."三、棧的應用實現-遞歸-面包屑導航欄
"; } /** *TODO:岀棧操作 */ public function Pop(){ /* 判斷:空棧則返回錯誤 */ if($this->top == -1){ return error; } /* 先移除棧元素針后前移棧頂指針 */ $this->out = $this->arr[$this->top]; $this->top = --$this->top; /* 輸出 */ echo "棧頂指針現在所屬位置".$this->top."--"; echo "$this->out 岀棧成功"."
"; /* 銷毀移除元素 */ unset($this->out); } /** *TODO:程序結束時執行 */ public function __destruct(){ echo "over"; } } $stack = new Stack(); $stack->Push("entner");//Push沒有加循環,可參看系列文章三-隊列 $stack->Push("susan"); $stack->Push("george"); $stack->Pop(); //這里同樣可以使用循環操作 $stack->Pop(); $stack->Pop();
【HTML-Web布局】
目錄結構如下: 電腦--- | | 電腦配件--- | | 顯示器 固態硬盤 網絡產品--- | | 路由器 無線網卡"; echo "
【后臺邏輯執行】
link(); $res = mysqli_query($conn,"select * from cat"); $arr = array();//【注:這個$arr放在函數外面不可以,應該是函數作用域限制】 while($row = mysqli_fetch_array($res,MYSQLI_ASSOC)){ /* 遍歷結果集放入數組 */ $arr[] = $row; } while($cat_id>0){ foreach($arr as $k=>$v){ if($cat_id == $v["cat_id"]){ $list[] = $v; $cat_id = $v["pid"]; } } } return $list; } echo ""; $list = array_reverse(mbx($cat_id)); print_r($list); foreach($list as $k => $v){ echo $v["Catname"].">"; }最后如果您覺得這篇文章對您有幫助,請您為我點個贊吧:)畢竟敲字配上感冒還是有點...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22879.html
摘要:堆棧算法引子棧是計算機術語中比較重要的概念,實質上棧就是一段內存區域,但是棧滿足一定的特性,那就是只有一個口,具有先入后出的特性,這種特性在計算機中有很廣泛的運用。 /** * PHP堆棧算法 * Created on 2017-4-27 * Author entner * Email 1185087164@qq.com */ 引子 ????棧...
摘要:數據結構基本概念拆成數據和結構兩個詞來看,結構就是經過排列組合后映射到內存的一種關系,你想想化學中的分子結構就明白了,所以數據結構就是數據之間的一種關系,利用這些關系去處理強邏輯問題。該結構的數據元素之間存在著多對多的關系,也稱網狀結構。 數據結構起源與起因 起因: ??????因為現實世界問題大多數是復雜的而非簡單的數值計算(例如:圖像、視頻、聲音),將數據進行適當的排序、組合將有利...
摘要:數據結構基本概念拆成數據和結構兩個詞來看,結構就是經過排列組合后映射到內存的一種關系,你想想化學中的分子結構就明白了,所以數據結構就是數據之間的一種關系,利用這些關系去處理強邏輯問題。該結構的數據元素之間存在著多對多的關系,也稱網狀結構。 數據結構起源與起因 起因: ??????因為現實世界問題大多數是復雜的而非簡單的數值計算,將數據進行適當的排序、組合將有利于計算機對復雜性邏輯問題的...
摘要:隊列算法名詞解釋在計算機編程語言中用來為復雜的聲明定義簡單的別名例如,你不用像下面這樣重復定義有個字符元素的數組只需這樣定義,類型即代表了具有個元素的字符數組,使用方法如下中譯為結構,其實就是定義抽象數據類型例這個就是一個由班級姓名年齡 /** * PHP隊列算法 * Created on 2017-4-25 * Author entner * Emai...
摘要:所謂數組英語,是有序的元素序列。組成數組的各個變量稱為數組的分量,也稱為數組的元素,有時也稱為下標變量。在棧中添加數據和刪除數據也被稱為推入和彈出,而且推入和彈出只會發生在棧的頂部。棧是一種數據結構,而隊列則是一種的數據結構,即先進先出。 所謂數組(英語:Array),是有序的元素序列。 若將有限個類型相同的變量的集合命名,那么這個名稱為數組名。 組成數組的各個變量稱為數組的分量,也稱...
閱讀 3427·2021-09-26 09:46
閱讀 2782·2021-09-13 10:23
閱讀 3510·2021-09-07 10:24
閱讀 2388·2019-08-29 13:20
閱讀 2919·2019-08-28 17:57
閱讀 3072·2019-08-26 13:27
閱讀 1175·2019-08-26 12:09
閱讀 505·2019-08-26 10:27