C语言队列创建
數(shù)據(jù)結(jié)構(gòu)之隊列,隊列是另一種特殊的線性表,是先進先出的,并且出去的元素會被刪除。就如同我們真實生活中排隊一樣,先到的人排在前面,也最先離開隊列。那么我們就來談一下它的具體實現(xiàn),這里主要使用鏈?zhǔn)酱鎯Ψ绞健?br /> 下面是代碼
#include<stdio.h> #include<stdlib.h> 創(chuàng)建一個鏈表結(jié)構(gòu) typedef struct QueueNode {int data;struct QueueNode *next; }QueueNode,*Queuelink; 再創(chuàng)建一個隊列結(jié)構(gòu) typedef struct Queue {Queuelink front, rear;//這里的首尾都是指針型的 }Queue; //初始化隊列 void init(Queue *q) { //初始化為空并分配空間q->front = q->rear = (Queuelink)malloc(sizeof(QueueNode));if (!q->front){exit(0);}//末尾指針指向空q->front->next = NULL; } //入隊操作,這里我們的隊首節(jié)點并不存儲值。 void insert(Queue *q, int e) {Queuelink p;p = (Queuelink)malloc(sizeof(QueueNode));if (p == NULL)exit(0);p->data = e;//這部分和鏈表的尾插法一致p->next = NULL;q->rear->next = p;q->rear = p; } //出隊操作,其實就是單鏈表的操作 void out(Queue *q, int *e) {Queuelink p;if (q->front == q->rear){return;}p = q->front->next;*e = p->data;q->front->next = p->next;if (q->rear == p){q->rear = q->front;}free(p); } //判斷是否為空 int isempty(Queue *q) {if (q->front == q->rear)return 1;else return 0; }總結(jié)
- 上一篇: PS剪裁工具详解
- 下一篇: 《Java程序员修炼之道》.pdf