数据结构---队列C语言实现

#include <stdio.h>
#include <stdlib.h>
//队列大小
#define   SIZE  1024
static int  queue[SIZE] = {0};
static int head , tail ;
//0   1
int Is_Empty(void)
{
    //判断队列是否为空,如果头是尾,就证明为空
	return  head == tail ;
}
//0   1
int Is_Full(void)
{
    //判断队列是否已经满了
	return (head+1)%SIZE == tail ;
}
//入队
int enqueue(int value)
{
	if(Is_Full())
	{
		return 1 ;
	}
	queue[head] = value ;
	head = (head + 1) % SIZE ;
	return 0 ;
}
//出队
int dequeue(int *value)
{
	if(Is_Empty())
		return 1 ;
	*value = queue[tail] ;
	tail = (tail + 1) % SIZE ;
	return 0 ;
}

int main(void)
{
    int i ;
    int temp ;
    int buffer[5] = {1,2,3,4,5};

    printf("入队前:\n");
    for(i = 0 ; i < 5 ; i++)
    {
        printf("queue[%d]:%d\n",i,queue[i]);
    }
    for(i = 0 ; i < 5 ; i++)
    {
        enqueue(buffer[i]) ;
    }
    printf("入队后: \n");
    for(i = 0 ; i < 5 ; i++)
    {
        printf("queue[%d]:%d\n",i,queue[i]);
    }
    printf("出队后: \n");
    while(1)
    {
        if(dequeue(&temp))
            break ;
        printf("%d\n",temp);
    }
    getchar();
}

运行结果:

入队前:

queue[0]:0

queue[1]:0

queue[2]:0

queue[3]:0

queue[4]:0

入队后:

queue[0]:1

queue[1]:2

queue[2]:3

queue[3]:4

queue[4]:5

出队后:

1

2

3

4

5

时间: 2024-11-13 12:27:49

数据结构---队列C语言实现的相关文章

详解数据结构C语言实现之循环队列_C 语言

本文讲的是循环队列,首先我们必须明白下面几个问题 循环队列的基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,front指向队列的第一个元素,rear指向队列最后一个元素的下一个位置: (3)当队列为空时,front与rear的值相等,但不一定为零: 3.循环队列入队的伪算法 (1)把值存在rear所在的位置: (2)rear=(rear+1)%maxsize

排序算法-数据结构基数排序c++语言

问题描述 数据结构基数排序c++语言 设计一个将一组英文单词按字典序排列的基数排序算法.设单词均由小写字母或空格构成,最长的单词有n个字母 解决方案 简单说下思路吧.先有26个指针数组,分别对应单词的第一位的a-z,这个指针指向另一个指针数组,对应单词的第二位字母(这层的数组最多可能有26个).以此类推,直到最后直接指向单词. 解决方案二: /******************************************************** *函数名称:GetNumInPos *参

如何实现循环队列_C 语言

生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题:从生活中,可以抽象出队列的概念,队列就是一个能够实现"先进先出"的存储结构.队列分为链式队列和静态队列:静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费:链式队列是用链表来实现队列的. #ifndef SQQUEUE_H_INCLUDED #define SQQUEUE_H_INCLUDED /* 防止重复包含 */ /////////////////

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例

  这篇文章主要介绍了PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例,需要的朋友可以参考下 队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO). PHP SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现. SplQueue类摘要如下: SplQueue简单使用如下: 代码如下: $queue = new SplQueue(); /** * 可见

链表-关于数据结构队列问题

问题描述 关于数据结构队列问题 2C 用队列做一个模拟抢红包的小程序,但现在还没有思路,望前辈不吝啬赐教之,谢谢. 解决方案 数据结构之队列数据结构--队列实现舞伴配对问题数据结构-栈和队列

c语言-InitTriplet里的(Triplet &amp;amp;amp;T)是什意思,是严蔚敏数据结构(C语言)里的。

问题描述 InitTriplet里的(Triplet &T)是什意思,是严蔚敏数据结构(C语言)里的. include #include #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef ElemType* Triplet; Status Ini

PHP 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例_php实例

队列这种数据结构更简单,就像我们生活中排队一样,它的特性是先进先出(FIFO). PHP SPL中SplQueue类就是实现队列操作,和栈一样,它也可以继承双链表(SplDoublyLinkedList)轻松实现. SplQueue类摘要如下: SplQueue简单使用如下: 复制代码 代码如下: $queue = new SplQueue();   /**  * 可见队列和双链表的区别就是IteratorMode改变了而已,栈的IteratorMode只能为:  * (1)SplDoublyL

关于数据结构(c语言版)线性表的问题

问题描述 关于数据结构(c语言版)线性表的问题 写完线性表实验代码后,有些错误 不会调试 求大神帮帮忙! ps.错误截图:图片说明 代码: #include #include #include #define LIST_INIT_SIZE 100 //线性表存储空间的初始分量 #define LISTINCREMENT 10 //线性表存储空间的分配增量 typedef struct{ ElemType* elem; //存储空间基址 int length; //当前长度 int listsiz

求救。。。-求解数据结构用C语言写

问题描述 求解数据结构用C语言写 用C 语言写真得不会做 解决方案 http://www.cnblogs.com/robinli/archive/2011/02/26/1965630.html 解决方案二: http://www.oschina.net/code/snippet_21250_17113 解决方案三: 要善于google呀 解决方案四: 那你会用什么语言写,你先用你擅长的语言写好,然后我帮你改成c语言