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

資訊專欄INFORMATION COLUMN

【nginx】nginx學(xué)習(xí) 鏈表 數(shù)據(jù)結(jié)構(gòu)

Imfan / 2097人閱讀

摘要:鏈表數(shù)據(jù)結(jié)構(gòu)仿照源碼,寫個(gè)自己的鏈表中是鏈表內(nèi)存開始位置存放元素長(zhǎng)度下一個(gè)節(jié)點(diǎn)最后一個(gè)數(shù)據(jù)節(jié)點(diǎn)起始數(shù)據(jù)節(jié)點(diǎn)每一個(gè)元素的大小鏈表中,元素的最大存放個(gè)數(shù)申請(qǐng)的內(nèi)存,是否已經(jīng)分配滿,如果滿了,會(huì)申請(qǐng)新的大小的內(nèi)存然后用作里面鏈接起來編譯

nginx鏈表數(shù)據(jù)結(jié)構(gòu) 仿照nginx源碼,寫個(gè)自己的鏈表
#include "stdio.h"
#include 
typedef unsigned char u_char;//windows 中 是 byte

typedef struct list_part_s list_part_t;
typedef struct list_s list_t;

struct list_part_s{
    void *          startpos; // 鏈表內(nèi)存開始位置....
    int             length; //存放元素長(zhǎng)度....
    list_part_t*    next; //下一個(gè)節(jié)點(diǎn)....

};

struct list_s{
    list_part_t*    last;       //最后一個(gè)數(shù)據(jù)節(jié)點(diǎn)  ....
    list_part_t    start;      //起始數(shù)據(jù)節(jié)點(diǎn)  ...
    size_t          size;       //每一個(gè)元素的大小 ...
    int             max;       //鏈表中,元素的最大存放個(gè)數(shù) ...
};

list_t * list_create(int length,int size)
{
    list_t* l;
    l = (list_t* )malloc(sizeof(list_t));
    if (l == NULL)return NULL;
    l->start.startpos = malloc(length * size);
    if (l->start.startpos == NULL)return NULL;
    l->start.next = NULL;
    l->start.length = 0;
    l->last = &l->start;
    l->size = size;
    l->max = length;
    return l;
}

void* list_push(list_t * l)
{
    list_part_t* part;
    u_char * m;
    part = l->last;
    if (part->length == l->max) //申請(qǐng)的內(nèi)存,是否已經(jīng)分配滿,如果滿了,會(huì)申請(qǐng)新的大小的內(nèi)存.....................,然后用作next里面鏈接起來
    {
        part = malloc(sizeof(list_part_t));
        if (part == NULL) return NULL;
        part->startpos = malloc(l->max * l->size);
        if (part->startpos == NULL)return NULL;
        part->length = 0;
        part->next = NULL;
        l->last->next = part;
        l->last = part;
    }
    m = (char *)part->startpos + l->size * part->length;
    ++(part->length);
    return m;
}

void dump(list_t* l)
{
    int tmp=0;
    list_part_t* parttmp= & (l->start);
       printf("--->list=%x
",l);
       printf("---> .start=%x
",l->start);
       printf("---> .last=%x
",l->last);
       printf("---> .max=%x
",l->max);
       printf("---> .size=%x
",l->size);
       int i = 0;
    do{
        ++i;
        printf("==>part[%d]=%x
",i,parttmp);
        printf("==>length=%d
",parttmp->length);
        printf("==>startpos=%x
",parttmp->startpos);
        printf("==>next=%x

",parttmp->next);
        for(int j=0;jlength;++j){
            memcpy(&tmp,(u_char*)parttmp->startpos + j*l->size,sizeof(int));
            printf(" element:%x=%d~",(u_char*)parttmp->startpos + j*l->size,tmp);
        }
        printf("
");
    }while( parttmp = parttmp->next );
}

int main(int argc,char ** argv)
{
    list_t * list = list_create(10,sizeof(int));
    int* tmp=0;
    for(int i=245 ; i < 300; ++i)
    {
        tmp = list_push(list);
        *tmp = i;
    }
    dump(list);

}
編譯

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/39156.html

相關(guān)文章

  • 我眼中的 Nginx(五):Nginx — 子請(qǐng)求設(shè)計(jì)之道

    摘要:上圖中,每個(gè)紅圈表示一個(gè)請(qǐng)求,每一層的請(qǐng)求分別是上一層請(qǐng)求的子請(qǐng)求。換而言之,父請(qǐng)求是依賴于子請(qǐng)求的。特別地,的子請(qǐng)求運(yùn)行時(shí),會(huì)阻塞父請(qǐng)求掛起其對(duì)應(yīng)的協(xié)程。 張超:又拍云系統(tǒng)開發(fā)高級(jí)工程師,負(fù)責(zé)又拍云 CDN 平臺(tái)相關(guān)組件的更新及維護(hù)。Github ID: tokers,活躍于 OpenResty 社區(qū)和 Nginx 郵件列表等開源社區(qū),專注于服務(wù)端技術(shù)的研究;曾為 ngx_lua 貢...

    Jioby 評(píng)論0 收藏0
  • Nginx 源碼分析:ngx_pool_t

    摘要:源代碼路徑版本主要作用分析提供了一種機(jī)制,幫助進(jìn)行資源管理內(nèi)存文件。用來標(biāo)記該使用時(shí)分配失敗次數(shù)。根據(jù)以上思路,可以很容易明白源碼里關(guān)于創(chuàng)建鏈表的代碼函數(shù)聲明說明輸入要分配的節(jié)點(diǎn)大小,返回一個(gè)的指針。 源代碼路徑 版本:1.8.0 srccoreNgx_palloc.h srccoreNgx_palloc.c 主要作用分析 提供了一種機(jī)制,幫助進(jìn)行資源管理(內(nèi)存、文件)。可以...

    codergarden 評(píng)論0 收藏0
  • Nginx 源碼分析:ngx_queue_t

    摘要:源文件路徑版本主要作用分析是提供的雙向鏈表。同時(shí),由于這種鏈表沒有節(jié)點(diǎn)成員變量,所以需要作為帶有節(jié)點(diǎn)變量的結(jié)構(gòu)體的成員變量存在,這種情況下,稱這種鏈表為寄宿鏈表,鏈表所在結(jié)構(gòu)體稱為宿主。和常規(guī)的雙向鏈表操作基本相同。 源文件路徑 版本:1.8.0 srccoreNgx_queue.h srccoreNgx_queue.c 主要作用分析 ngx_queue_t是Nginx提供的...

    jsyzchen 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

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