佇列的學習(2)

2021-08-15 03:53:54 字數 1551 閱讀 4701

佇列的實現上我們更願意使用鏈式儲存,這點與棧有所不同。

鏈佇列的結構為:

//鏈佇列的儲存結構為:

typedef struct node //節點的結構

qnode;

typedef struct//鏈佇列的結構

linkqueue;

鏈佇列的初始化:

void initlinkqueue(linkqueue *q)

入佇列操作

//入佇列操作

void insertqueue(linkqueue *q,int e)

p->data=e;

p->next=null;

q->rear->next=p;

q->rear=p;

}

出佇列操作:

void dequeue(linkqueue *q,int *e)

p=q->front->next;

*e=p->data;

q->front->next=p->next;

if(q->rear==p) //如果佇列中只有乙個元素,此時p就是瑋指標,刪掉這個元素之後需要將尾指標指向頭節點;

q->rear=q->front;

free(p);

}

銷毀乙個佇列
//銷毀乙個佇列

void destoryqueue(linkqueue *q)

}

實現輸入輸出功能:

//鏈佇列的儲存結構為:

typedef struct node //節點的結構

qnode;

typedef struct//鏈佇列的結構

linkqueue;

//鏈佇列的初始化

void initlinkqueue(linkqueue *q)

//入佇列操作

void insertqueue(linkqueue *q,int e)

p->data=e;

p->next=null;

q->rear->next=p;

q->rear=p;

}//出佇列操作:將佇列中的第乙個元素移出,隊頭指標不發生改變,改變頭節點的next指標即可

void dequeue(linkqueue *q,int *e)

p=q->front->next;

*e=p->data;

q->front->next=p->next;

if(q->rear==p) //如果佇列中只有乙個元素,刪刪掉這個元素之後需要將尾指標指向頭節點;

q->rear=q->front;

free(p);

}//銷毀乙個佇列

void destoryqueue(linkqueue *q)

}int main()

destoryqueue(&q);

return 0;

}

學習筆記(2) 棧和佇列

棧和佇列都是線性結構,是特殊的線性表。棧 僅在表尾進行插入或刪除元素的操作。表尾稱為棧頂,表頭稱為棧底。不含元素的空表為空棧。又稱為 先進後出 線性表。棧有兩種儲存結構 順序儲存和鏈式儲存 與線性表類似 設定top指標指向棧頂位置,base指標指向棧底位置,當top base 時,棧為空棧。使用c語...

佇列2 迴圈佇列

我們來看下上次我們寫下的queue struct queue 增加乙個 void pop 彈出第乙個 bool empty 是否為空 int num 返回有多少個元素 int gethead 獲取第乙個元素 現在我們增加乙個功能,獲取第i個元素。int getnum int x 好的,開始在裡邊填充...

佇列 優先佇列的學習

佇列定義 佇列是限定只能在表尾進行 插入,在表頭進行刪除的線性表 隊尾 允許插入的一端 隊頭 允許刪除的一端 佇列的定義 include queue 標頭檔案 using namespace std 需要加上使用名稱 空間,和sort 排序函式是一樣的。queue int q 格式 queue 型別...