国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

利用PHP實(shí)現(xiàn)常用的數(shù)據(jù)結(jié)構(gòu)之隊(duì)列(小白系列文章三)

SimonMa / 2138人閱讀

摘要:隊(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;$iqueue[$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(); */
三、隊(duì)列應(yīng)用實(shí)現(xiàn)-PHPMailer發(fā)送郵件

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

相關(guān)文章

  • 利用PHP實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)隊(duì)列小白系列文章

    摘要:隊(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...

    Tony 評論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)寫在前面(小白系列文章一)

    摘要:概述本系列文章主要運(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)用場...

    guqiu 評論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)寫在前面(小白系列文章一)

    摘要:概述本系列文章主要運(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í)討論,...

    馬龍駒 評論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)排序(小白系列文章七)

    摘要:排序嚴(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ù)造輪子,所以下面我將引用別人的文章作為本文的引文,...

    jayzou 評論0 收藏0
  • 利用PHP實(shí)現(xiàn)常用數(shù)據(jù)結(jié)構(gòu)數(shù)據(jù)結(jié)構(gòu)淺析(小白系列文章二)

    摘要:數(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ù)雜性邏輯問題的...

    DesGemini 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<