91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

并發系統數據細節-列隊

發布時間:2020-06-22 02:04:02 來源:網絡 閱讀:546 作者:佛觀一杯水 欄目:開發技術

列隊數據結構圖形

st并發系統數據細節-列隊C代碼實現,PHP程序需要懂C代碼這是基礎哈

#include<stdio.h>

#include<stdlib.h>

#include<memory.h>

#define N 100 //定義常量N 為10

#define mytype int //定義常量mytype 替換int

struct MyQueue

{

  mytype data[N];//數組存儲隊列

  int front;//拉屎  定義隊頭

  int rear;//吃東西 定義隊尾

};


typedef struct MyQueue myQ;

/*

代碼說明

在我們初始化隊列的過程中呢?如果隊頭和隊尾重回就表示隊列為空,這里我們設置隊頭和隊尾為0

在初始化內存空間為0

myQ *p 表示INT類型指針

*/

void init(myQ *p)

{

  p->front = p->rear = 0;

  memset(p->data,0,sizeof(mytype)*N);


}

/*

  判斷隊列是否滿,如果隊尾等于N 表示空間已經滿了,就返回1 如果沒滿就返回O

 C 語言中貌似沒有BOOL類型數據,就用1表示真O表示假。其實和PHP中的BOOL類型原理是一樣的

*/

int isfull(myQ *p)

{

   if(p->rear == N)

   {

     return 1;

   }else

   {

     return 0;

   }

}

/*

 如果隊頭等于隊尾就表示列隊為空,就返回1 否則返回O

*/

int isempty(myQ *p)

{

   if(p->front==p->rear)

   {

       return 1;

   }else{

       return 0;

   }

}

/*

  入隊操作

  判斷隊列是否滿,如果滿了就RETURN,如果沒滿就把要插入的數據添加到隊尾,同時隊尾指針往后移動一位

*/

void array_unshift(myQ *p,mytype insertdata)

{

   if(isfull(p)==1)

   {

       return;

   }else{

       p->data[p->rear] = insertdata;

       p->rear+=1;

   }

}

/*

  出隊操作

  判斷如果隊列為空就返回0

 

*/

void deQ(myQ *p)

{

   if(isempty(p)==1)

   {

       return 0;

   }

   //因為隊尾是不變的,用隊頭減去隊尾就表示

   int index = p->rear-p->front;

   if(index==1)

   {

       p->rear = 0;

   }else{

       int i;

       for(i=0;i<index-1;i++)

       {

           p->data[i] = p->data[i+1];

       }

       p->rear-=1;

   }

}

mytype getlast(myQ *p)

{

  if(isempty(p)==1)

   {


         return 0;

   }

   else{

        mytype data = p->data[p->front];

        int i;

        int index = p->rear-p->front;

        for(i=0;i<index-1;i++)

        {

            p->data[i] = p->data[i+1];

        }

    return data;

   }

}

mytype array_pop(myQ *p)

{

    if(isempty(p)==1)

    {

        return 0;

    }else{

       int i;

       mytype index = p->rear-p->front;

       for(i=index;i>=0;i--)

       {

           p->data[i] = p->data[i-1];

       }


    }

    return p->data[p->rear];

}

void print(myQ *p)

{

  printf("\n");

  if(isempty(p)==1)

  {

      return 0;

  }else{

      int i;

      for(i=p->front;i<p->rear;i++)

      {

          printf("%d",p->data[i]);

      }

  }

}

說明:以上代碼通過測試可以使用,就不全面做注解了。這里模擬了兩個PHP 的系統函數array_shift從頭部讀取和array_pop從尾部讀取函數

使用隊列時插入在一端進行而刪除在另一端進行,就是一種先進先出的數據結構。在大多數的項目當中呢?隊列多半是加上線程一同操作,下一章會講解多線程與隊列。幫助大家理解消息隊列。請多多支持博文。重申一遍由于本人技術水平有限,文章有不足或者錯誤的地方,就多多指正

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黔江区| 安泽县| 安吉县| 麻城市| 荥经县| 开远市| 略阳县| 达州市| 娄底市| 招远市| 台北市| 巫溪县| 肇东市| 康马县| 漯河市| 巴马| 江油市| 三明市| 秦安县| 昌乐县| 太仓市| 梓潼县| 隆尧县| 开化县| 金溪县| 尖扎县| 买车| 南涧| 玛纳斯县| 武乡县| 嘉祥县| 江门市| 翁源县| 怀仁县| 沈阳市| 大同市| 屏边| 修文县| 随州市| 万宁市| 林甸县|