佇列的特點是先進先出,有乙個佇列頭和乙個佇列尾。如下圖示:整個佇列含有乙個佇列頭指標front和乙個佇列尾指標rear,並且佇列中每個節點中包含乙個資料域和乙個指向下乙個節點的指標域。
定義乙個節點:
typedef struct _nodenode;
定義佇列結構體:
typedef struct queue;
queue *create_queue(void)
申請乙個佇列的節點--節點成員賦值--如果空佇列--佇列的頭尾都指向新的節點--不為空--佇列的尾下乙個節點指標指向新佇列--更新佇列的隊尾指標也就是將隊尾指向新的節點。
queue *insert_queue(queue *myqueue, int data)
node *new_node = null;
new_node = (node *)malloc(sizeof(node));//create a new node
new_node->data = data;
new_node->next = null;
if (myqueue->rear == null)
else
return myqueue;
}
申請乙個節點指標並指向佇列頭--移動佇列頭指標到佇列放入下乙個節點--判斷佇列頭是否為空--釋放需要刪除的節點。
queue *delete_queue(queue *myqueue)
else
free(p_node);
} return myqueue;
}
int get_queue_length(queue *myqueue)
while (p_node != myqueue->rear)
return len;
}void queue_print(queue *myqueue)
printf("the queue is :");
while (p_node != myqueue->rear)
printf("%2d\n", p_node->data);
}
//
// test.cpp : 定義控制台應用程式的入口點。
//#include "stdafx.h"
#include #pragma warning(disable:4996)
#include using namespace std;
typedef struct _nodenode;
typedef struct queue;
queue *create_queue(void)
//insert queue
queue *insert_queue(queue *myqueue, int data)
node *new_node = null;
new_node = (node *)malloc(sizeof(node));//create a new node
new_node->data = data;
new_node->next = null;
if (myqueue->rear == null)
else
return myqueue;
}queue *delete_queue(queue *myqueue)
else
free(p_node);
} return myqueue;
}int get_queue_length(queue *myqueue)
while (p_node != myqueue->rear)
return len;
}void queue_print(queue *myqueue)
printf("the queue is :");
while (p_node != myqueue->rear)
printf("%2d\n", p_node->data);
}int main()
佇列實現先進先出
1 入隊,如例 q.push x 將x 接到佇列的末端。2 出隊,如例 q.pop 彈出佇列的第乙個元素,注意,並不會返回被彈出元素的值。3 訪問隊首元素,如例 q.front 即最早被壓入佇列的元素。4 訪問隊尾元素,如例 q.back 即最後被壓入佇列的元素。5 判斷佇列空,如例 q.empty...
Golang實現先進先出佇列
package queue type queue struct type node struct next node func newqueue queue func q queue isempty bool func q queue size int func q queue enqueue it...
JS實現佇列效果,先進先出
queue param size 佇列大小 function queue size 如果傳遞了size引數就設定了佇列的大小 if size null isnan size list.unshift data return true 從佇列中取出資料 this.pop function 返回佇列的大...