隊列(鏈式)

隊列的鏈式優勢是不用考慮隊滿狀況。代碼以下:ios

#include <iostream>
#include <stdio.h>
#include <stdlib.h>
/* run this program using the console pauser or add your own getch, system("pause") or input loop */

//定義鏈式隊列結點 
typedef struct LinkNode{
    int data;
    struct LinkNode *next;
}LinkNode;

//定義隊頭尾指針結點(或者叫隊列) 
typedef struct {
    LinkNode *rear,*front;
}LinkQueue;

//初始化隊列(帶頭結點) 
void InitQueue(LinkQueue &Q){
    Q.front=Q.rear=(LinkNode*)malloc(sizeof(LinkNode));//隊頭和隊尾指針都指向頭結點
    Q.front->next = NULL; 
}

//初始化隊列(不帶頭結點) 
void InitQueue(LinkQueue &Q){
    Q.front=NULL;//隊頭和隊尾指針都指向NULL
    Q.rear=NULL;
}

//判斷隊列是否爲空(帶頭結點) 
bool isEmpty(LinkQueue Q){
    if(Q.front==Q.rear){
        return true;
    }else{
        return false;
    }
} 

//判斷隊列是否爲空(不帶頭結點) 
bool isEmpty(LinkQueue Q){
    if(Q.front==NULL){
        return true;
    }else{
        return false;
    }
} 

//入隊(帶頭結點) 
void EnQueue(LinkQueue &Q,int x){
    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));
    s->data = x;
    s->next = NULL;
    Q.rear->next = s;//s插入到rear以後 
    Q.rear = s;//修改表尾指針 
}

//入隊(不帶頭結點) 
void EnQueue(LinkQueue &Q,int x){
    LinkNode *s = (LinkNode*)malloc(sizeof(LinkNode));
    s->data = x;
    s->next = NULL;
    if(Q.front==NULL){//隊頭尾指針指向第一個元素 
        Q.front = s;
        Q.rear = s;
    }else{
        Q.rear->next = s;//s插入到rear以後 
        Q.rear = s;//修改表尾指針 
    }   
}

//出隊(帶頭結點)
bool DeQueue(LinkQueue &Q,int &e)){
    if(Q.front==Q.rear){//隊空報錯 
        return false;
    }
    LinkNode *q = Q.front->next;//指針q指向被刪結點 
    e = q->data;
    Q.front->next = q->next;
    if(Q.rear==q){//最後一個結點狀況 
        Q.rear = Q.front; 
    }
    free(q);
    return true;
} 

//出隊(不帶頭結點)
bool DeQueue(LinkQueue &Q,int &e)){
    if(Q.front==NULL){//隊空報錯 
        return false;
    }
    LinkNode *q = Q.front->next;//指針q指向被刪結點 
    e = q->data;
    Q.front = q->next;
    if(Q.rear==q){//最後一個結點狀況 
        Q.front=NULL;//隊頭和隊尾指針都指向NULL
        Q.rear=NULL;
    }
    free(q);
    return true;
} 

int main(int argc, char** argv) {
    return 0;
}
相關文章
相關標籤/搜索