欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

数据结构与算法分析 p64 队列的练习

程序员文章站 2024-01-28 17:10:46
...

数据结构与算法分析 p64 队列的练习

#include<stdio.h>
#include<stdlib.h>
typedef struct queuerecord{
	int capacity;
	int front;
	int rear;
	int *array;
	int size;
}*queue;
void makeempty(queue q) {
	q->front = 1;
	q->rear = 0;
	q->size = 0;
}
queue createqueue(int maxelements) {
	queue q = (queue)malloc(sizeof(struct queuerecord));
	q->array = (int*)malloc(sizeof(int)*maxelements);
	q->capacity = maxelements;
	makeempty(q);
	return q;
}

int isfull(queue q) {
	return q->size == q -> capacity;
}
int isempty(queue q) {
	return q->size == 0;
}
void dispose(queue q) {
	free(q->array);
	free(q);
}
int circ(int value,queue q) {
	value++;
	if (value== q->capacity) {
		value= 0;
	}
	return value;
	
}
void enqueue(int x, queue q) {
	if (isfull(q)) {
		printf("full queue");
	}
	else {
		q->size++;
		q->rear = circ(q->rear,q);

		q->array[q->rear] = x;
	}
}

void dequeue(queue q) {
	if (isempty(q)) {
		printf("empty queue");
	}
	else {
		q->size--;
		q->front = circ(q->front, q);
	}
}
int main() {
	queue q=createqueue(20);
	int a;
	for (int i = 0; i < 10; i++) {
		scanf("%d", &a);
		enqueue(a, q);
	}
	for (int i = 0; i < 5; i++) {
		
		dequeue(q);
	}
	for (int i = q->front; i <= q->rear; i++) {
		printf("%d",q->array[i]);
	}
	return 0;

}

数据结构与算法分析 p64 队列的练习