数据结构--队列(C language)

#include<stdio.h>
#include<stdlib.h>
typedef struct Queue {
	int* data;
	int head, tail, length;
}Queue;
//结构体框架-----------------------
void init(Queue* q, int len) {  //初始化大小为len的空间
	q->data = (int*)malloc(sizeof(int) * len);
	q->head = 0;				//队列刚开始head = 0
	q->tail = -1;				//tail为-1
	q->length = len;
}
//初始化结束-----------------------
void push(Queue* q, int value) { //把value插入队尾
	if (q->tail + 1 >= q->length) { //判断该队列是否已满
		return;
	}
	q->tail++;
	q->data[q->tail] = value;
	return;
}
//插入元素------------------------
void output(Queue* q) {  //遍历队列中的所有元素 输出
	for (int i = q->head; i <= q->tail; i++) {
		printf("%d ", q->data[i]);
	}
	printf("\n");
}
//遍历元素------------------------
int front(Queue* q) {
	return q->data[q->head];
}
//输出队首元素----------------------
void pop(Queue* q) {
	q->head++;
	return;
}
//删除队首元素----------------------
int empty(Queue* q) { 
	return q->head > q->tail;   //为空:返回1   //不为空:返回0
}
//判断是否为空----------------------
void clear(Queue* q) {
	free(q->data);
	free(q);
}
//析构结束------------------------
int main() {
	Queue* queue = (Queue*)malloc(sizeof(Queue));
	init(queue, 100);
	for (int i = 1; i <= 10; i++) {
		push(queue, i);

	}
	output(queue);
	if (!empty(queue)) {
		printf("%d\n", front(queue));
		pop(queue);
	}
	output(queue);
	clear(queue);

	system("pause");
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值