队列-链式储存
隊列-鏈式儲存
隊列的鏈式儲存其實就是線性表的單鏈表,只不過它要遵循列隊的規(guī)則,只能尾進頭出,我們把它簡稱為鏈隊列。
首先,創(chuàng)建結構體和頭文件等
typedef struct Queue{int data;struct Queue *next;//創(chuàng)建指針指向下一個結點 }Queue;復制代碼初始化隊列
Queue *initQueue() {Queue *queue = (Queue*)malloc(sizeof(Queue));//創(chuàng)建頭結點。queue->next = NULL;return queue; }復制代碼進隊列
Queue *enQueue(Queue * rear,int data) {Queue *enElem = (Queue*)malloc(sizeof(Queue));//創(chuàng)建新的結點enElem->data = data;enElem->next = rear;rear->next = enElem;//從尾部插入rear = enElem;return rear;//返回尾部指針 }復制代碼出隊列
void deQueue(Queue *front,Queue *rear) {if (front->next == NULL) {printf("隊列為空");return ;}Queue *p = front->next;//首結點printf("%d", p->data);//出隊列front->next = p->next;//將頭結點指針,指向下一個結點地址if (rear == p) {//如果隊尾指針等于隊頭指針,將隊尾重新置為頭結點。也就是空隊列rear = front;}free(p);//釋放指針 }復制代碼應用
int main() {Queue *front,*rear;rear = front = initQueue();rear = enQueue(rear,1);rear = enQueue(rear, 2);rear = enQueue(rear, 3);rear = enQueue(rear, 4);deQueue(front, rear);deQueue(front, rear);deQueue(front, rear);deQueue(front, rear);return 0; }復制代碼運行結果
總結
- 上一篇: 前端进阶 -css的弱化与js的强化(1
- 下一篇: outlook vba开发要点