摘要:隊列算法名詞解釋在計算機編程語言中用來為復雜的聲明定義簡單的別名例如,你不用像下面這樣重復定義有個字符元素的數組只需這樣定義,類型即代表了具有個元素的字符數組,使用方法如下中譯為結構,其實就是定義抽象數據類型例這個就是一個由班級姓名年齡
/** * PHP隊列算法 * Created on 2017-4-25 * Author entner * Email 1185087164@qq.com */名詞解釋
1.typedef:在計算機編程語言中用來為復雜的聲明定義簡單的別名
例如,你不用像下面這樣重復定義有 81 個字符元素的數組:
char line[81]; char text[81];
只需這樣定義,Line類型即代表了具有81個元素的字符數組,使用方法如下
typedef char Line[81];
2.struct:中譯為結構,其實就是定義抽象數據類型
例:
struct Student { int class; char name; int age; } 這個Student就是一個由班級、姓名、年齡等基本數據類型組成的抽象數據類型
3.typedef struct:就是定義一個抽象數據類型,并取一個別名
例:
typedef struct Student { int class; char name; int age; }Stu; 現在這個Stu就代表著Student即Student的別名
結構體類型,我也沒學過,找資料看看,也能懂,沒多難,不要怕.
請參看:struct和typedef struct徹底明白了
一、默寫隊列結構默寫會讓你記憶更深刻,同時也會鍛煉抽象的邏輯思維,一邊看不懂,就多看幾遍,再查一查相關資料,應該問題不大,你甚至可以找張紙默寫一下。
/** *InitQueue 初始化隊列 * Typedef int QueueElementType Typedef Struct{ QueueElementType data[MaxSize]//指定數組長度 Q->rear = 0 //指定隊首隊尾缺省值 Q->front = 0 }SQueue; */ /** *EnQueue 入隊 * Status EnQueue(SQueue *Q,int e){ //判斷是否為滿隊 if((Q->rear + 1) % MaxSize == Q->front){ //如果隊滿則不能入隊 return error; } Q->data[Q->rear] = e;//入隊 Q->rear = (Q->rear + 1) % MaxSize;//隊尾指針向后移動,在循環隊列中,隊尾有可能在隊首前面,所以又一個取模運算 } */ /** *DeQueue 出隊 * Status Dequeue(SQueue *Q,int e){ if(Q->front == Q->rear){ return error; } e = Q->data[Q->front]; //將隊首移出 Q->front = (Q->front + 1) % MaxSize; //將隊首向后移動一位,若到數組最后一位且數組不為空,則移到數組頭部 return ok; } */二、事先說明(細節問題)
針對隊列這種數據結構,有兩個指針,其中注意rear是指隊尾元素的下一個元素而非隊尾本元素 。在順序隊列中,front與rear相等時隊列為空;但在循環隊列中,當front與rear相等時,隊列既可以為空也可以為滿,所以判斷循環隊列滿的問題是個常考點,在這里給一個公式:(rear+1)%QueueSize == front則隊滿
三、隊列結構基本實現/** *TODO:隊列元素輸入輸出 * 創建類,構造數組、數組長度、隊尾指針、隊首指針4個屬性 */ Class Queue{ protected $front; protected $rear; protected $MaxSize; protected $queue = array(0=>"隊列"); protected $out; //出隊標識 public function __construct(){ $this->InitQueue(); } /** *TODO:隊列初始化 *@pagram int $maxsize 數組最大長度 */ public function InitQueue($maxsize){ $this->front = 0; $this->rear = 0; $this->MaxSize = $maxsize; } /** *TODO:入隊操作 *@pagram int $e 入隊元素 */ public function EnQueue($e){ if(($this->rear + 1) % $this->MaxSize != $this->front){ for($i=0;$i四、隊列應用實現-PHPMailer發送郵件queue[$this->rear] = $e[$i]; $this->rear = ($this->rear + 1) % $this->MaxSize; echo $e[$i] . "入隊成功" . "
"; } var_dump($this->queue); echo "
"; return $this->queue; }else{ return error; } } /** *TODO:出隊操作 */ public function DeQueue(){ if($this->rear != $this->front){ $this->out = $this->queue[$this->front]; echo $this->out . "出隊成功" . "
"; unset($this->out); //將隊頭部移出隊列 $this->front = ($this->front + 1) % $this->MaxSize; } } /** *TODO:程序結束時執行 */ public function __destruct(){ echo "over"; } } $queue = new Queue(); $data = array( 0=>"entner", 1=>"momo", 2=>"binbo" ); $queue->EnQueue($data); $queue->DeQueue(); $queue->DeQueue(); $queue->DeQueue(); */
PHPMailer擴展包
/** * 隊列郵件 * 查詢數據庫中status=0的郵箱賬號,發送郵件 */ /* 引入PHPMailer類 */ require_once("./PHPMailer-master/PHPMailerAutoload.php"); /* 封裝郵件函數 */ function SendMail($Host,$From,$FromPass,$FormName,$To,$ToName){ $mail = new PHPMailer; //$mail->SMTPDebug = 3; // Enable verbose debug output $mail->isSMTP(); // Set mailer to use SMTP $mail->Host = $Host; // Specify main and backup SMTP servers $mail->SMTPAuth = true; // Enable SMTP authentication $mail->Username = $From; // SMTP username $mail->Password = $FromPass; $mail->CharSet = "UTF-8"; $mail->setFrom($From, $FormName); $mail->addAddress($To,$ToName); $mail->isHTML(true); // Set email format to HTML $mail->Subject = "PHPMailer"; $mail->Body = "利用PHPMailer,發送郵件"; return $mail->send(); } //你可以先測試一下郵件函數是否可行 //SendMail("SMTP.126.com","roadcover@126.com","123qweasd","網易","entner@sina.com","sina") while(1){ /* 連接數據庫 */ $conn = mysqli_connect("localhost","root","root","mail"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); exit(); } /* 查詢數據庫中status為0的記錄加入隊列 */ $res = mysqli_query($conn,"select * from mail where `status` = 0 order by `mail_id` ASC limit 5"); $arr = array(); //遍歷結果集納入數組 while($row = mysqli_fetch_array($res,MYSQLI_ASSOC)){ $arr[] = $row; } /* 判斷數組是否為空,即是否還有未發送的郵件 */ if(empty($arr)){ /* 跳出永真循環 */ break; }else{ /* 遍歷數組,每30秒調用一次郵件函數,發送郵件,更新數據 */ foreach($arr as $k=>$v){ if(SendMail("SMTP.126.com","roadcover@126.com","123qweasd","網易","{$v["address"]}","sina")){ mysqli_query($conn,"update mail set `status` = 1 "); echo "郵件發送成功"."最后
"; }else{ echo "郵件發送失敗"; } sleep(30); } } } //郵件發送完畢顯示Done echo "done";
如果您覺得這篇文章對您有所幫助,請為我點個贊吧:)
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/25967.html
摘要:隊列算法名詞解釋在計算機編程語言中用來為復雜的聲明定義簡單的別名例如,你不用像下面這樣重復定義有個字符元素的數組只需這樣定義,類型即代表了具有個元素的字符數組,使用方法如下中譯為結構,其實就是定義抽象數據類型例這個就是一個由班級姓名年齡 /** * PHP隊列算法 * Created on 2017-4-25 * Author entner * Emai...
摘要:概述本系列文章主要運用以實現常用的數據結構,包括基本結構展現基本結構實現應用場景實現文章總體來說畢竟淺顯,適合新手閱讀和學習討論,歡迎指教,其實每一個作者都是期待讀者的反饋的。 之前都放在文章里,還是有點零散,剛好SF專欄門檻較低,便尋思著把文章重新整理一遍,這里也謝謝SF了。 概述 本系列文章主要運用PHP以實現常用的數據結構,包括: 1.基本結構展現 2.基本結構實現 3.應用場...
摘要:概述本系列文章主要運用以實現常用的數據結構,包括基本結構展現基本結構實現應用場景實現文章總體來說畢竟淺顯,適合新手閱讀和學習討論,歡迎指教,但求勿噴。關于涉及到的知識點,我也盡可能寫的詳細一些,并向大家分享查閱的相關資料。 概述 本系列文章主要運用PHP以實現常用的數據結構,包括: 1.基本結構展現 2.基本結構實現 3.應用場景實現 文章總體來說畢竟淺顯,適合新手閱讀和學習討論,...
摘要:排序嚴格來說不算數據結構,更應該歸于算法一類,因為數據結構指的是數據與數據之間的關系,排序參與其中,更多的是讓數據狀態發生了改變。 排序嚴格來說不算數據結構,更應該歸于算法一類,因為數據結構指的是數據與數據之間的關系,排序參與其中,更多的是讓數據狀態發生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實有一句話說的是不錯的,不必重復造輪子,所以下面我將引用別人的文章作為本文的引文,...
摘要:數據結構基本概念拆成數據和結構兩個詞來看,結構就是經過排列組合后映射到內存的一種關系,你想想化學中的分子結構就明白了,所以數據結構就是數據之間的一種關系,利用這些關系去處理強邏輯問題。該結構的數據元素之間存在著多對多的關系,也稱網狀結構。 數據結構起源與起因 起因: ??????因為現實世界問題大多數是復雜的而非簡單的數值計算,將數據進行適當的排序、組合將有利于計算機對復雜性邏輯問題的...
閱讀 3049·2021-11-18 10:02
閱讀 3315·2021-11-02 14:48
閱讀 3384·2019-08-30 13:52
閱讀 527·2019-08-29 17:10
閱讀 2070·2019-08-29 12:53
閱讀 1392·2019-08-29 12:53
閱讀 1018·2019-08-29 12:25
閱讀 2155·2019-08-29 12:17