亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

數據結構C語言實現系列——隊列

2019-11-17 05:02:52
字體:
來源:轉載
供稿:網友
Word-BREAK: break-all; PADDING-TOP: 4px; BORDER-BOTTOM: windowtext 0.5pt solid">
#include <stdio.h>
#include <stdlib.h>

typedef int elemType;
/************************************************************************/
/*                    以下是關于隊列鏈接存儲操作的6種算法               */
/************************************************************************/
strUCt sNode{
    elemType data;            /* 值域 */
    struct sNode *next;        /* 鏈接指針 */
};
struct queueLK{
    struct sNode *front;    /* 隊首指針 */
    struct sNode *rear;        /* 隊尾指針 */
};

/* 1.初始化鏈隊 */
void initQueue(struct queueLK *hq)
{
    hq->front = hq->rear = NULL;        /* 把隊首和隊尾指針置空 */
    return;
}

/* 2.向鏈隊中插入一個元素x */
void enQueue(struct queueLK *hq, elemType x)
{
    /* 得到一個由newP指針所指向的新結點 */
    struct sNode *newP;
    newP = malloc(sizeof(struct sNode));
    if(newP == NULL){
                exit(1);
    }
    /* 把x的值賦給新結點的值域,把新結點的指針域置空 */
    newP->data = x;
    newP->next = NULL;
    /* 若鏈隊為空,則新結點即是隊首結點又是隊尾結點 */
    if(hq->rear == NULL){
        hq->front = hq->rear = newP;
    }else{    /* 若鏈隊非空,則依次修改隊尾結點的指針域和隊尾指針,使之指向新的隊尾結點 */
        hq->rear = hq->rear->next = newP;        /* 注重賦值順序哦 */
    }
    return;
}

/* 3.從隊列中刪除一個元素 */
elemType outQueue(struct queueLK *hq)
{
    struct sNode *p;
    elemType temp;
    /* 若鏈隊為空則停止運行 */
    if(hq->front == NULL){
        printf("隊列為空,無法刪除! ");
        exit(1);
    }
    temp = hq->front->data;        /* 暫存隊尾元素以便返回 */
    p = hq->front;                /* 暫存隊尾指針以便回收隊尾結點 */
    hq->front = p->next;        /* 使隊首指針指向下一個結點 */
    /* 若刪除后鏈隊為空,則需同時使隊尾指針為空 */
    if(hq->front == NULL){
        hq->rear = NULL;
    }
    free(p);        /* 回收原隊首結點 */
    return temp;    /* 返回被刪除的隊首元素值 */
}

/* 4.讀取隊首元素 */
elemType peekQueue(struct queueLK *hq)
{
    /* 若鏈隊為空則停止運行 */
    if(hq->front == NULL){
        printf("隊列為空,無法刪除! ");
        exit(1);
    }
    return hq->front->data;        /* 返回隊首元素 */
}

/* 5.檢查鏈隊是否為空,若為空則返回1, 否則返回0 */
int emptyQueue(struct queueLK *hq)
{
    /* 判定隊首或隊尾任一個指針是否為空即可 */
    if(hq->front == NULL){
        return 1;
    }else{
        return 0;
    }
}

/* 6.清除鏈隊中的所有元素 */
void clearQueue(struct queueLK *hq)
{
    struct sNode *p = hq->front;        /* 隊首指針賦給p */
    /* 依次刪除隊列中的每一個結點,最后使隊首指針為空 */
    while(p != NULL){
        hq->front = hq->front->next;
        free(p);
        p = hq->front;
    }    /* 循環結束后隊首指針已經為空 */
    hq->rear = NULL;        /* 置隊尾指針為空 */
    return;
}

/************************************************************************/

int main(int argc, char* argv[])
{
    struct queueLK q;
    int a[8] = {3, 8, 5, 17, 9, 30, 15, 22};
    int i;
    initQueue(&q);
    for(i = 0; i < 8; i++){
        enQueue(&q, a[i]);
    }
    printf("%d ", outQueue(&q));    printf("%d  ", outQueue(&q));
    enQueue(&q, 68);
    printf("%d ", peekQueue(&q));    printf("%d  ", outQueue(&q));
    while(!emptyQueue(&q)){
        printf("%d ", outQueue(&q));
    }
    printf(" ");
    clearQueue(&q);
    system("pause");
}
更多文章 更多內容請看C/C++進階技術文檔  數據結構  數據結構相關文章專題,或

#include <stdio.h>
#include <stdlib.h>

typedef int elemType;
/************************************************************************/
/*                      以下是關于隊列順序存儲操作的6種算法               */
/************************************************************************/

struct queue{
    elemType *queue;        /* 指向存儲隊列的數組空間 */
    int front, rear, len;    /* 隊首指針(下標),隊尾指針(下標),隊列長度變量 */
    int maxSize;            /* queue數組長度 */
};

void againMalloc(struct queue *q)
{
    /* 空間擴展為原來的2倍,原內容被自動拷貝到p所指向的存儲空間中 */
    elemType *p;
    p = realloc(q->queue, 2 * q->maxSize * sizeof(elemType));
    /* 動態存儲空間分配,若失敗則退出運行 */
    if(!p){
        printf("空間分配失?。?");
        exit(1);
    }
    q->queue = p;        /* 使queue指向新的隊列空間 */
    /* 把原隊列的尾部內容后移maxSize個位置 */
    if(q->rear != q->maxSize -1){
        int i;
        for(i = 0; i <= q->rear; i++){
            q->queue[i+q->maxSize] = q->queue[i];
        }
        q->rear += q->maxSize;        /* 隊尾指針后移maxSize個位置 */
    }
    q->maxSize = 2 * q->maxSize;    /* 把隊列空間大小修改為新的長度 */
    return;
}

/* 1.初始化隊列 */
void initQueue(struct queue *q, int ms)
{
    /* 檢查ms是否有效,若無效則退出運行 */
    if(ms <= 0){
        printf("ms值非法!
");
        exit(1);
    }
    q->maxSize = ms;        /* 置隊列空間大小為ms */
    /* 動態存儲空間分配,若失敗則退出運行 */
    q->queue = malloc(ms * sizeof(elemType));
    if(!q->queue){
        printf("內存空間分配失??! ");
        exit(1);
    }
    q->front = q->rear = 0;        /* 初始置隊列為空 */
    return;
}

/* 2.向隊列中插入元素x */
void enQueue(struct queue *q, elemType x)
{
    /* 當隊列滿時進行動態生分配 */
    if((q->rear + 1) % q->maxSize == q->front){
        againMalloc(q);
    }
    q->rear = (q->rear + 1) % q->maxSize;        /* 求出隊尾的下一個位置 */
    q->queue[q->rear] = x;                        /* 把x的值賦給新的隊尾 */
    return;
}

/* 3.從隊列中刪除元素并返回 */
elemType outQueue(struct queue *q)
{
    /* 若隊列為空則終止運行 */
    if(q->front == q->rear){
        printf("隊列為空,無法刪除! ");
        exit(1);
    }
    q->front = (q->front +1) % q->maxSize;        /* 使隊首指針指向下一個位置 */
    return q->queue[q->front];                    /* 返回隊首元素 */
}

/* 4.讀取隊首元素,不改變隊列狀態 */
elemType peekQueue(struct queue *q)
{
    /* 若隊列為空則終止運行 */
    if(q->front == q->rear){
        printf("隊列為空,無法刪除! ");
        exit(1);
    }
    return q->queue[(q->front +1) % q->maxSize];/* 隊首元素是隊首指針的下一個位置中的元素 */
}

/* 5.檢查一個隊列是否為空,若是則返回1,否則返回0 */
int emptyQueue(struct queue *q)
{
    if(q->front == q->rear){
        return 1;
    }else{
        return 0;
    }
}

/* 6.清除一個隊列,并釋放動態存儲空間 */
void clearQueue(struct queue *q)
{
    if(q->queue !
= NULL){
        free(q->queue);
        q->queue = NULL;            /* 設置隊列空間指針為空 */
        q->front = q->rear = 0;        /* 設置隊列為空 */
        q->maxSize = 0;                /* 設置隊列大小為0 */
    }
    return;
}

/************************************************************************/

int main(int argc, char* argv[])
{
    struct queue q;
    int a[8] = {3, 8, 5, 17, 9, 30, 15, 22};
    int i;
    initQueue(&q, 5);
    for(i = 0; i < 8; i++){
        enQueue(&q, a[i]);
    }
    printf("%d ", outQueue(&q));    printf("%d  ", outQueue(&q));
    enQueue(&q, 68);
    printf("%d ", peekQueue(&q));    printf("%d  ", outQueue(&q));
    while(!emptyQueue(&q)){
        printf("%d ", outQueue(&q));
    }
    printf(" ");
    clearQueue(&q);
    system("pause");
    return 0;
}
更多文章 更多內容請看C/C++進階技術文檔  數據結構  數據結構相關文章專題,或

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色综合91久久精品中文字幕| 伊人久久免费视频| 欧美激情亚洲另类| 日本国产精品视频| 亚洲精品国产成人| 亚洲综合中文字幕在线| 日韩欧美在线观看| 亚洲日本中文字幕| 欧美性理论片在线观看片免费| 成人精品在线观看| 日韩精品www| 久久精品国产久精国产思思| 最新国产成人av网站网址麻豆| 亚洲自拍偷拍视频| 日韩av免费在线看| 久久久久久这里只有精品| 欧美最顶级丰满的aⅴ艳星| 日韩中文字幕亚洲| 精品亚洲一区二区三区在线播放| 欧美一级电影免费在线观看| 永久免费毛片在线播放不卡| 欧美性色xo影院| 欧美激情精品久久久久久久变态| 中文字幕成人精品久久不卡| 国色天香2019中文字幕在线观看| 免费av在线一区| 日韩中文字幕视频在线| 亚洲色图国产精品| 神马久久久久久| 精品久久香蕉国产线看观看gif| 国产亚洲视频在线观看| 国产女人精品视频| 欧美性视频精品| 国产成人综合av| 久久精品精品电影网| 亚洲在线免费看| 亚洲成人久久久| 欧美极品xxxx| 欧美高清理论片| 亚洲人成人99网站| 日本精品一区二区三区在线| 国内免费精品永久在线视频| 乱亲女秽乱长久久久| 日韩久久午夜影院| 日韩欧美高清视频| 国产亚洲一级高清| 国产精品1234| 欧美一级片久久久久久久| 国内精品小视频| 日韩欧美大尺度| 91九色综合久久| 国产亚洲日本欧美韩国| 最近中文字幕2019免费| 亚洲人成绝费网站色www| 日韩精品在线观看视频| 久久av中文字幕| 亚洲欧美国产va在线影院| 欧美一级淫片播放口| 亚洲成人a级网| 成人国产精品一区二区| 九九热视频这里只有精品| 亚洲精品视频免费| 亚洲欧美成人一区二区在线电影| 国产高清在线不卡| 欧美日韩在线观看视频小说| 亚洲国产又黄又爽女人高潮的| 91视频国产一区| 国产精品热视频| 日韩欧美成人精品| 在线观看中文字幕亚洲| 国产日韩在线看片| 51色欧美片视频在线观看| 国产精品av电影| 亚洲深夜福利在线| 精品高清美女精品国产区| 欧美日韩国产成人| 欧美理论在线观看| 欧美视频专区一二在线观看| 日韩电影在线观看中文字幕| 国产精品入口夜色视频大尺度| 一区二区三区四区在线观看视频| 一区二区三区四区在线观看视频| 69影院欧美专区视频| 亚洲综合日韩中文字幕v在线| 亚洲qvod图片区电影| 亚洲japanese制服美女| 国产一区二区动漫| 国产精品视频地址| 亚洲欧美综合v| 国产精品专区h在线观看| 久久久久久久999精品视频| 亚洲天堂视频在线观看| 亚洲香蕉伊综合在人在线视看| 日韩最新av在线| 亚洲一区免费网站| 亚洲精品乱码久久久久久金桔影视| 亚洲精品日韩丝袜精品| 九九精品视频在线观看| 日韩欧美国产网站| 理论片在线不卡免费观看| 日韩视频―中文字幕| 国产精品专区h在线观看| 国产日韩在线看片| 久久久国产影院| 久久精品国产亚洲7777| 国产精品美女www爽爽爽视频| 日韩av在线导航| 成人深夜直播免费观看| 国内精品久久久久| 日韩欧美一区二区三区| 91精品国产色综合久久不卡98| 亚洲性生活视频在线观看| 欧美激情亚洲国产| 欧美乱大交做爰xxxⅹ性3| 欧美一区二区大胆人体摄影专业网站| 国产国产精品人在线视| 91精品国产高清自在线看超| 在线视频中文亚洲| 国产mv久久久| 国产亚洲精品久久久久久| 中文字幕少妇一区二区三区| 91日本在线观看| 欧美视频中文字幕在线| 4p变态网欧美系列| 国产精品白嫩美女在线观看| 亚洲电影免费观看高清| 久久精品人人爽| 国产精品专区h在线观看| 色妞在线综合亚洲欧美| 久久精品91久久久久久再现| 中文字幕亚洲情99在线| 国产精品av在线| 97人人爽人人喊人人模波多| 欧美激情视频在线免费观看 欧美视频免费一| 亚洲男人的天堂网站| 国产精品av网站| 色视频www在线播放国产成人| 91夜夜揉人人捏人人添红杏| 国产精品美女在线观看| 国产精品自拍偷拍| 欧美极品美女电影一区| 国产丝袜一区二区| 亚洲性线免费观看视频成熟| 日韩精品日韩在线观看| 中文亚洲视频在线| 久久天天躁狠狠躁夜夜爽蜜月| 久久好看免费视频| 日韩av在线免费播放| 亚洲影视九九影院在线观看| 国产精品aaa| 免费91在线视频| 欧美性xxxx极品hd欧美风情| 欧美久久精品一级黑人c片| 久久精品最新地址| 亚洲欧美日韩综合| 亚洲大胆人体在线| 亚洲成人av在线| 热re91久久精品国99热蜜臀| 亚洲精品久久久久国产| 亚洲精品美女网站| 国产在线不卡精品| 色99之美女主播在线视频| 91精品综合视频| 精品二区三区线观看|