首页 > 代码库 > 数据结构--队列之C数组实现
数据结构--队列之C数组实现
队列是一种限定操作的线性表,它只能在表的一段插入,另外一段取出.
所以也称为先进先出数据结构(FIFO---First In First Out)
C代码如下(有小bug不想调了,作为参考即可):
#include<stdio.h> #define maxsize 5 typedef int ElemType; typedef struct queue { int head; int tail; ElemType Data[maxsize]; }Queue; void InitQueue(Queue *Q) { Q->tail=0; Q->head=0; } void EnQueue(Queue *Q) { int value; int i; printf("Input Queue Value:\n"); scanf("%d",&value); Q->head++; int len=Q->head-Q->tail; if(len<maxsize) { for(i=len-1;i>=0;i--) Q->Data[i+1]=Q->Data[i]; } Q->Data[Q->tail]=value; printf("\n"); } void DeQueue(Queue *Q) { int len=Q->head-Q->tail-1; Q->head=Q->head-1; if(len<=maxsize) { printf("Out put Value:\n"); printf("%d ",Q->Data[len]); } printf("\n"); } void IsEmpty(Queue *Q) { if(Q->head==0&&Q->tail==0) printf("Queue is empty.\n"); else printf("Queue is not empet.\n "); printf("\n"); } void IsFull(Queue *Q) { if(Q->head-Q->tail>=maxsize) printf("Queue is Full.\n"); else printf("Queue is not Full.\n"); printf("\n"); } void main() { Queue Q; InitQueue(&Q); EnQueue(&Q); EnQueue(&Q); EnQueue(&Q); EnQueue(&Q); EnQueue(&Q); IsEmpty(&Q); IsFull(&Q); DeQueue(&Q); DeQueue(&Q); DeQueue(&Q); DeQueue(&Q); DeQueue(&Q); IsEmpty(&Q); IsFull(&Q); }
结果图:
转载请注明作者:小刘
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。