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