C语言循环队列

来源:百度知道 编辑:UC知道 时间:2024/06/09 08:34:31
生产者:输入;消费者输出;
一组生产者通过一个具有N个缓冲区的缓冲池循环不断地向一组消费者提供产品.
要求:利用你学过的C语言和数据结构知识,解决此问题.
注:用C语言循环队列解决这个问题?

很简单啊,用一个数组,和2个指针就可以做到这一点,注意,一定要控制好指针,防止写的东西覆盖了没有发送的东西。

一个指针控制写,一个控制输出。如果走到尾巴 ,就把它移动到数组的0号元素。如果写的郭快,赶上了输出指针就不可以写。或则进行互斥处理,方法太多。不过写起来浪费时间。

简单的程序,先构造一个循环链表,包括N个缓寸区和一个额外的区域(便于队列的操作).
输入1时,消费者输出.
输入其他数字时,生成者输入.
#include <stdio.h>
#define N 10

struct queue
{
int data;
queue *front;
};

int main()
{
int i, choice;
queue *head;
queue *tail;
queue *temp;
head = tail = new queue;
temp = new queue;
temp->front = head;
tail->front = temp;

for(i=1; i<N; i++)
{
temp->front = new queue;
temp = temp->front;
temp->front = head;
}
tail = temp;

while(true)
{
scanf("%d", &choice);
if(choice == 1) //consumer
{
if(head == tail->front) break;
printf("消费:%d\n", head