摘要:隊(duì)列算法名詞解釋在計(jì)算機(jī)編程語言中用來為復(fù)雜的聲明定義簡單的別名例如,你不用像下面這樣重復(fù)定義有個(gè)字符元素的數(shù)組只需這樣定義,類型即代表了具有個(gè)元素的字符數(shù)組,使用方法如下中譯為結(jié)構(gòu),其實(shí)就是定義抽象數(shù)據(jù)類型例這個(gè)就是一個(gè)由班級姓名年齡
/** * PHP隊(duì)列算法 * Created on 2017-4-25 * Author entner * Email 1185087164@qq.com */名詞解釋
1.typedef:在計(jì)算機(jī)編程語言中用來為復(fù)雜的聲明定義簡單的別名
例如,你不用像下面這樣重復(fù)定義有 81 個(gè)字符元素的數(shù)組:
char line[81]; char text[81];
只需這樣定義,Line類型即代表了具有81個(gè)元素的字符數(shù)組,使用方法如下
typedef char Line[81];
2.struct:中譯為結(jié)構(gòu),其實(shí)就是定義抽象數(shù)據(jù)類型
例:
struct Student { int class; char name; int age; } 這個(gè)Student就是一個(gè)由班級、姓名、年齡等基本數(shù)據(jù)類型組成的抽象數(shù)據(jù)類型
3.typedef struct:就是定義一個(gè)抽象數(shù)據(jù)類型,并取一個(gè)別名
例:
typedef struct Student { int class; char name; int age; }Stu; 現(xiàn)在這個(gè)Stu就代表著Student即Student的別名
結(jié)構(gòu)體類型,我也沒學(xué)過,找資料看看,也能懂,沒多難,不要怕.
請參看:struct和typedef struct徹底明白了
一、默寫隊(duì)列結(jié)構(gòu)默寫會讓你記憶更深刻,同時(shí)也會鍛煉抽象的邏輯思維,一邊看不懂,就多看幾遍,再查一查相關(guān)資料,應(yīng)該問題不大,你甚至可以找張紙默寫一下。
/** *InitQueue 初始化隊(duì)列 * Typedef int QueueElementType Typedef Struct{ QueueElementType data[MaxSize]//指定數(shù)組長度 Q->rear = 0 //指定隊(duì)首隊(duì)尾缺省值 Q->front = 0 }SQueue; */ /** *EnQueue 入隊(duì) * Status EnQueue(SQueue *Q,int e){ //判斷是否為滿隊(duì) if((Q->rear + 1) % MaxSize == Q->front){ //如果隊(duì)滿則不能入隊(duì) return error; } Q->data[Q->rear] = e;//入隊(duì) Q->rear = (Q->rear + 1) % MaxSize;//隊(duì)尾指針向后移動(dòng),在循環(huán)隊(duì)列中,隊(duì)尾有可能在隊(duì)首前面,所以又一個(gè)取模運(yùn)算 } */ /** *DeQueue 出隊(duì) * Status Dequeue(SQueue *Q,int e){ if(Q->front == Q->rear){ return error; } e = Q->data[Q->front]; //將隊(duì)首移出 Q->front = (Q->front + 1) % MaxSize; //將隊(duì)首向后移動(dòng)一位,若到數(shù)組最后一位且數(shù)組不為空,則移到數(shù)組頭部 return ok; } */二、隊(duì)列結(jié)構(gòu)基本實(shí)現(xiàn)
/** *TODO:隊(duì)列元素輸入輸出 * 創(chuàng)建類,構(gòu)造數(shù)組、數(shù)組長度、隊(duì)尾指針、隊(duì)首指針4個(gè)屬性 */ Class Queue{ protected $front; protected $rear; protected $MaxSize; protected $queue = array(0=>"隊(duì)列"); protected $out; //出隊(duì)標(biāo)識 public function __construct(){ $this->InitQueue(); } /** *TODO:隊(duì)列初始化 *@pagram int $maxsize 數(shù)組最大長度 */ public function InitQueue($maxsize){ $this->front = 0; $this->rear = 0; $this->MaxSize = $maxsize; } /** *TODO:入隊(duì)操作 *@pagram int $e 入隊(duì)元素 */ public function EnQueue($e){ if(($this->rear + 1) % $this->MaxSize != $this->front){ for($i=0;$i三、隊(duì)列應(yīng)用實(shí)現(xiàn)-PHPMailer發(fā)送郵件queue[$this->rear] = $e[$i]; $this->rear = ($this->rear + 1) % $this->MaxSize; echo $e[$i] . "入隊(duì)成功" . "
"; } var_dump($this->queue); echo "
"; return $this->queue; }else{ return error; } } /** *TODO:出隊(duì)操作 */ public function DeQueue(){ if($this->rear != $this->front){ $this->out = $this->queue[$this->front]; echo $this->out . "出隊(duì)成功" . "
"; unset($this->out); //將隊(duì)頭部移出隊(duì)列 $this->front = ($this->front + 1) % $this->MaxSize; } } /** *TODO:程序結(jié)束時(shí)執(zhí)行 */ 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擴(kuò)展包
/** * 隊(duì)列郵件 * 查詢數(shù)據(jù)庫中status=0的郵箱賬號,發(fā)送郵件 */ /* 引入PHPMailer類 */ require_once("./PHPMailer-master/PHPMailerAutoload.php"); /* 封裝郵件函數(shù) */ 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,發(fā)送郵件"; return $mail->send(); } //你可以先測試一下郵件函數(shù)是否可行 //SendMail("SMTP.126.com","roadcover@126.com","123qweasd","網(wǎng)易","entner@sina.com","sina") while(1){ /* 連接數(shù)據(jù)庫 */ $conn = mysqli_connect("localhost","root","root","mail"); if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); exit(); } /* 查詢數(shù)據(jù)庫中status為0的記錄加入隊(duì)列 */ $res = mysqli_query($conn,"select * from mail where `status` = 0 order by `mail_id` ASC limit 5"); $arr = array(); //遍歷結(jié)果集納入數(shù)組 while($row = mysqli_fetch_array($res,MYSQLI_ASSOC)){ $arr[] = $row; } /* 判斷數(shù)組是否為空,即是否還有未發(fā)送的郵件 */ if(empty($arr)){ /* 跳出永真循環(huán) */ break; }else{ /* 遍歷數(shù)組,每30秒調(diào)用一次郵件函數(shù),發(fā)送郵件,更新數(shù)據(jù) */ foreach($arr as $k=>$v){ if(SendMail("SMTP.126.com","roadcover@126.com","123qweasd","網(wǎng)易","{$v["address"]}","sina")){ mysqli_query($conn,"update mail set `status` = 1 "); echo "郵件發(fā)送成功"."最后
"; }else{ echo "郵件發(fā)送失敗"; } sleep(30); } } } //郵件發(fā)送完畢顯示Done echo "done";
如果您覺得這篇文章對您有所幫助,請為我點(diǎn)個(gè)贊吧:)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/22884.html
摘要:隊(duì)列算法名詞解釋在計(jì)算機(jī)編程語言中用來為復(fù)雜的聲明定義簡單的別名例如,你不用像下面這樣重復(fù)定義有個(gè)字符元素的數(shù)組只需這樣定義,類型即代表了具有個(gè)元素的字符數(shù)組,使用方法如下中譯為結(jié)構(gòu),其實(shí)就是定義抽象數(shù)據(jù)類型例這個(gè)就是一個(gè)由班級姓名年齡 /** * PHP隊(duì)列算法 * Created on 2017-4-25 * Author entner * Emai...
摘要:概述本系列文章主要運(yùn)用以實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu),包括基本結(jié)構(gòu)展現(xiàn)基本結(jié)構(gòu)實(shí)現(xiàn)應(yīng)用場景實(shí)現(xiàn)文章總體來說畢竟淺顯,適合新手閱讀和學(xué)習(xí)討論,歡迎指教,其實(shí)每一個(gè)作者都是期待讀者的反饋的。 之前都放在文章里,還是有點(diǎn)零散,剛好SF專欄門檻較低,便尋思著把文章重新整理一遍,這里也謝謝SF了。 概述 本系列文章主要運(yùn)用PHP以實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu),包括: 1.基本結(jié)構(gòu)展現(xiàn) 2.基本結(jié)構(gòu)實(shí)現(xiàn) 3.應(yīng)用場...
摘要:概述本系列文章主要運(yùn)用以實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu),包括基本結(jié)構(gòu)展現(xiàn)基本結(jié)構(gòu)實(shí)現(xiàn)應(yīng)用場景實(shí)現(xiàn)文章總體來說畢竟淺顯,適合新手閱讀和學(xué)習(xí)討論,歡迎指教,但求勿噴。關(guān)于涉及到的知識點(diǎn),我也盡可能寫的詳細(xì)一些,并向大家分享查閱的相關(guān)資料。 概述 本系列文章主要運(yùn)用PHP以實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu),包括: 1.基本結(jié)構(gòu)展現(xiàn) 2.基本結(jié)構(gòu)實(shí)現(xiàn) 3.應(yīng)用場景實(shí)現(xiàn) 文章總體來說畢竟淺顯,適合新手閱讀和學(xué)習(xí)討論,...
摘要:排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因?yàn)閿?shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。 排序嚴(yán)格來說不算數(shù)據(jù)結(jié)構(gòu),更應(yīng)該歸于算法一類,因?yàn)閿?shù)據(jù)結(jié)構(gòu)指的是數(shù)據(jù)與數(shù)據(jù)之間的關(guān)系,排序參與其中,更多的是讓數(shù)據(jù)狀態(tài)發(fā)生了改變。于是,我們開始用PHP來聊聊算法。 引子 其實(shí)有一句話說的是不錯(cuò)的,不必重復(fù)造輪子,所以下面我將引用別人的文章作為本文的引文,...
摘要:數(shù)據(jù)結(jié)構(gòu)基本概念拆成數(shù)據(jù)和結(jié)構(gòu)兩個(gè)詞來看,結(jié)構(gòu)就是經(jīng)過排列組合后映射到內(nèi)存的一種關(guān)系,你想想化學(xué)中的分子結(jié)構(gòu)就明白了,所以數(shù)據(jù)結(jié)構(gòu)就是數(shù)據(jù)之間的一種關(guān)系,利用這些關(guān)系去處理強(qiáng)邏輯問題。該結(jié)構(gòu)的數(shù)據(jù)元素之間存在著多對多的關(guān)系,也稱網(wǎng)狀結(jié)構(gòu)。 數(shù)據(jù)結(jié)構(gòu)起源與起因 起因: ??????因?yàn)楝F(xiàn)實(shí)世界問題大多數(shù)是復(fù)雜的而非簡單的數(shù)值計(jì)算,將數(shù)據(jù)進(jìn)行適當(dāng)?shù)呐判颉⒔M合將有利于計(jì)算機(jī)對復(fù)雜性邏輯問題的...
閱讀 3216·2023-04-25 18:43
閱讀 896·2021-11-24 09:39
閱讀 1364·2021-10-14 09:43
閱讀 3896·2021-09-22 15:58
閱讀 1911·2019-08-29 17:18
閱讀 415·2019-08-29 14:14
閱讀 3082·2019-08-29 13:01
閱讀 1619·2019-08-29 12:33