国产成人精品三级麻豆,色综合天天综合高清网,亚洲精品夜夜夜,国产成人综合在线女婷五月99播放,色婷婷色综合激情国产日韩

Hi,歡迎來到嵌入式培訓(xùn)高端品牌 - 華清遠(yuǎn)見教育科技集團(tuán)<北京總部官網(wǎng)>,專注嵌入式工程師培養(yǎng)15年!
當(dāng)前位置: > 華清遠(yuǎn)見教育科技集團(tuán) > 嵌入式學(xué)習(xí) > 講師博文 > 關(guān)于鏈?zhǔn)疥?duì)列是否需要頭結(jié)點(diǎn)
關(guān)于鏈?zhǔn)疥?duì)列是否需要頭結(jié)點(diǎn)
時(shí)間:2017-01-04作者:華清遠(yuǎn)見

隊(duì)列是一種特殊的線性表,它只允許在表頭進(jìn)行刪除操作,而在表尾進(jìn)行插入操作,是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu)。

隊(duì)列可以采用數(shù)組存儲(chǔ),也可以采用鏈?zhǔn)酱鎯?chǔ)。關(guān)于鏈?zhǔn)酱鎯?chǔ)常見的又有兩種:帶頭結(jié)點(diǎn)和不帶頭結(jié)點(diǎn)。我們建議采用帶頭結(jié)點(diǎn)的實(shí)現(xiàn)方式,因?yàn),這樣可以大大簡化對隊(duì)列的處理。

下面以入隊(duì)操作為例,對本文觀點(diǎn)進(jìn)行了進(jìn)一步的闡述。假設(shè)基本結(jié)構(gòu)的定義為:

typedef int datatype;
        typedef struct node
        {
                datatype data;
                struct node* next;
        }listnode, *linknode;
        typedef struct
        {
                linknode front;
                linknode rear;
        }linkqueue;

帶頭結(jié)點(diǎn)的鏈隊(duì)入隊(duì)實(shí)現(xiàn):

 void enqueue(linkqueue* q, datatype x){
                linknode p = (linknode)malloc(sizeof(listnode));
                p->data = x;
                p->next = NULL;
                q->rear->next = p;
                q->rear = p;
        }

不帶頭結(jié)點(diǎn)的鏈隊(duì)入隊(duì)實(shí)現(xiàn):

void enqueue(linkqueue* q, datatype x){
                linknode p = (linknode)malloc(sizeof(listnode));
                p->data = x;
                p->next = NULL;
                if(q->front == NULL){
                        q->front = p;
                        q->rear = p;
                        return;
                }
                q->rear->next = p;
                q->rear = p;
        }

比較上面兩段程序,帶頭結(jié)點(diǎn)的鏈隊(duì)的入隊(duì)操作,只要把新生成的結(jié)點(diǎn)加到尾結(jié)點(diǎn)后即可。而不帶頭結(jié)點(diǎn)的操作則還要注意到邊界操作,假如是第一次入隊(duì),需修改隊(duì)頭指針。同樣的道理,對于出隊(duì)操作,假如是后一個(gè)結(jié)點(diǎn)出隊(duì),需要注意修改隊(duì)尾指針。由此,我們建議鏈?zhǔn)疥?duì)列好采用帶頭結(jié)點(diǎn)的實(shí)現(xiàn)方式。

發(fā)表評論
評論列表(網(wǎng)友評論僅供網(wǎng)友表達(dá)個(gè)人看法,并不表明本站同意其觀點(diǎn)或證實(shí)其描述)