码迷,mamicode.com
首页 > 其他好文 > 详细

循环(顺序)队列存储实现

时间:2017-07-06 16:48:35      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:data   code   int   return   malloc   iss   maxsize   sso   ret   

技术分享


# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>

typedef struct Node
{
	int data;
	char ch;
}* PNODE, NODE;

typedef struct QUEUE
{
	int maxsize;
	int front;
	int rare;
	PNODE pBase;
}* PQUEUE, QUEUE;

//初始化
void init(PQUEUE pQ, int length)
{
	pQ->maxsize = length;

	pQ->pBase = (PNODE)malloc(sizeof(NODE) * length);

	pQ->front = pQ->rare = 0;

	while (!pQ->pBase)
	{
		printf("内存分配失败!

\n"); exit(-1); } return; } //入队 void enqueue(PQUEUE pQ, int val, char ch) { if ((pQ->rare + 1) % (pQ->maxsize + 1) == pQ->front) { printf("队列满!

%d, %c无法入队\n", val, ch); return; } else { pQ->pBase[pQ->rare % pQ->maxsize].data = val; pQ->pBase[pQ->rare % pQ->maxsize].ch = ch; printf("入队元素:%d, %c\n", val, ch); pQ->rare++; } return; } //遍历 void traverse(PQUEUE pQ) { for (int i = pQ->front; i < pQ->rare; i++) { printf("%d, %c\n", pQ->pBase[i % pQ->maxsize].data, pQ->pBase[i % pQ->maxsize].ch); } return; } //出队 void dequeue(PQUEUE pQ) { printf("出队元素:%d, %c\n", pQ->pBase[pQ->front], pQ->pBase[pQ->front]); pQ->front++; return; } int main(void) { QUEUE q; init(&q, 10); enqueue(&q, 0, ‘z‘); enqueue(&q, 1, ‘y‘); enqueue(&q, 2, ‘x‘); enqueue(&q, 3, ‘w‘); enqueue(&q, 4, ‘v‘); enqueue(&q, 5, ‘u‘); enqueue(&q, 6, ‘t‘); enqueue(&q, 7, ‘s‘); enqueue(&q, 8, ‘r‘); enqueue(&q, 9, ‘q‘); enqueue(&q, 10, ‘p‘); traverse(&q); dequeue(&q); traverse(&q); enqueue(&q, 11, ‘n‘); traverse(&q); dequeue(&q); traverse(&q); enqueue(&q, 12, ‘m‘); traverse(&q); return 0; }



循环(顺序)队列存储实现

标签:data   code   int   return   malloc   iss   maxsize   sso   ret   

原文地址:http://www.cnblogs.com/ljbguanli/p/7126938.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!