您的位置:首页 > 其它

队列的顺序存储C实现

2013-08-22 15:36 267 查看
#include<stdio.h>

#include<stdlib.h>

typedef struct Queue{

int * pBase;//数组 存放节点的值

int front; //指向队头的数字

int rear; //指向队尾的数字

int length;//队列的长度

}QUEUE;

//初始化队列

void init(QUEUE *pQueue,int n){

pQueue->pBase=(int *)malloc(sizeof(int)*n);

pQueue->front=0;

pQueue->rear=0;

pQueue->length=n;

}

//判断是否满队

bool full_queue(QUEUE *pQueue){

int r=pQueue->rear;

if((r+1)%6==pQueue->front){

return true;

}else{

return false;

}

}

//入队

bool en_queue(QUEUE *pQueue,int val){

if(full_queue(pQueue)){

return false;

}else{

pQueue->pBase[pQueue->rear]=val;

pQueue->rear=(pQueue->rear+1)%pQueue->length;

return true;

}

}

//遍历队

void traverse_queue(QUEUE *pQueue){

int i=pQueue->front;

while(i!=pQueue->rear){

printf("%d: \n",pQueue->pBase[i]);

i=(i+1)%pQueue->length;

}

return ;

}

//判断是否空队

bool empty_queue(Queue *pQueue){

if(pQueue->rear==pQueue->front){

return true;

}else{

return false;

}

}

//出队

bool out_queue(QUEUE *pQueue,int * pVal){

if(empty_queue(pQueue)){

return false;

}else{

*pVal=pQueue->pBase[pQueue->front];

pQueue->front=(pQueue->front+1)%pQueue->length;

return true;

}

}

int main(int argc, char* argv[])

{ int a;

int val;

QUEUE queue;

init(&queue,6);

en_queue(&queue,1);

en_queue(&queue,2);

en_queue(&queue,3);

en_queue(&queue,4);

traverse_queue(&queue);

out_queue(&queue,&val);

printf("出队的为%d\n",val);

traverse_queue(&queue);

scanf("%a",&a);

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: