c语言queue函数 c++queue函数

C语言和queue有关的指令

#include stdlib.h // malloc, free

10年积累的网站制作、做网站经验,可以快速应对客户对网站的新想法和需求。提供各种问题对应的解决方案。让选择我们的客户得到更好、更有力的网络服务。我虽然不认识你,你也不认识我。但先网站设计后付款的网站建设流程,更有镇宁免费网站建设让你可以放心的选择与我们合作。

#include "queue.h"

struct queue * queue_create(void)

{

struct queue *q = (struct queue *)malloc(sizeof(struct queue));

if (q == NULL) { // malloc failed

return NULL;

}

q-head = dnode_create();

q-tail = dnode_create();

q-head-next = q-tail;

q-tail-prev = q-head;

q-size = 0;

return q;

}

void queue_destroy(struct queue *q)

{

if (q != NULL) {

while (!queue_isempty(q)) {

queue_dequeue(q);

}

dnode_destroy(q-head);

dnode_destroy(q-tail);

free(q);

q = NULL;

}

}

int queue_front(const struct queue * const q)

{

return q-tail-prev-data;

}

void queue_enqueue(struct queue * const q, const int e)

{

struct dnode *dn = dnode_create();

dn-data = e;

struct dnode *tmp = q-head-next;

q-head-next = dn;

dn-prev = q-head;

dn-next = tmp;

tmp-prev = dn;

q-size += 1;

}

int queue_dequeue(struct queue * const q)

{

struct dnode *dn = q-tail-prev;

struct dnode *tmp = dn-prev;

tmp-next = q-tail;

q-tail-prev = tmp;

int ret = dn-data;

dnode_destroy(dn);

q-size -= 1;

return ret;

}

int queue_size(const struct queue * const q)

{

return q-size;

}

int queue_isempty(const struct queue * const q)

{

return q-size 0 ? 0 : 1;

}

//////////////////////

static void bubble_sort(int * const a, const int n)

{

int swapped = 1;

while (swapped) {

swapped = 0;

for (int i = 1; i n; i++) {

if (a[i] a[i - 1]) {

int tmp = a[i];

a[i] = a[i - 1];

a[i - 1] = tmp;

swapped = 1;

}

}

}

}

C语言,用数组实现队列的入队,出队函数编程

这样的话应该符合你的要求:

#includestdio.h

void add(int queue[],int x);

int Top(int queue[]);

void del(int queue[]);

int end=0;

int main()

{

int n;

scanf("%d",n);//将要入队列n个元素

int queue[1000];

for(int i=1;i=n;i++)//输入n个元素

{

add(queue,i);//将i加入队列

}

//验证加入队列的元素,将队列中的元素按照输入的顺序输出:

for( i=1;i=n;i++)

{

printf("%d ",Top(queue));//Top函数返回队头元素

del(queue);//删除队头元素

}

//验证输出已经出队列后的队列(数组)元素:

printf("\n");

for(i=1;i=n;i++)

printf("%d ",queue[i]);

printf("\n");

return 0;

}

void add(int queue[],int x)

{

queue[++end]=x;

}

int Top(int queue[])

{

return queue[1];//注意,这里的函数始终return queue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!

}

void del(int queue[])

{

for(int i=2;i=end;i++)

{

queue[i-1]=queue[i];

}

queue=0;//将删除后的地方置0

end--;

}

C语言queue如何加锁和解锁

有两种办法:

重载一个queue模板,把锁封装到重载的函数里

每次使用queue的函数的时候加锁,使用完毕后,解锁


网页题目:c语言queue函数 c++queue函数
分享链接:http://myzitong.com/article/ddgigij.html