【C++】【八】队列

此代码示例展示了如何使用C++实现一个基于数组的线性队列,包括初始化、入队、出队、查看队首元素、查看队尾元素以及清空和释放队列的操作。程序中创建了多个Person结构体对象并进行队列操作,最后打印队列中的所有元素并清空队列。
摘要由CSDN通过智能技术生成

main.cc

#include "queue_linerlist.h"
#include <iostream>


typedef struct PERSON{
    char name[64];
    int age;
}person;

int main()
{
    queue_linerlist* queue = Init_queue_linerlist();
    person p1 = { "aaa",10 };
    person p2 = { "bbb",20 };
    person p3 = { "ccc",30 };
    person p4 = { "ddd",40 };
    person p5 = { "eee",50 };

    Push_queue_linerlist(queue, &p1);
    Push_queue_linerlist(queue, &p2);
    Push_queue_linerlist(queue, &p3);
    Push_queue_linerlist(queue, &p4);
    Push_queue_linerlist(queue, &p5);

   person* pp=(person*)Back_queue_linerlist(queue);
   printf("name=%s,age=%d\n", pp->name, pp->age);


   printf("===========================\n");
    while (Size_queue_linerlist(queue) > 0) {
        person* px = (person*)Front_queue_linerlist(queue);
        printf("name=%s,age=%d\n", px->name, px->age);
        Pop_queue_linerlist(queue);
    }

    Free_queue_linerlist(queue);
    


    system("pause");
    return 0;
}

 queue_linerlist.h

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

#define MAX_SIZE 1024

typedef struct QUEUE_LINERLIST {
	void* data[MAX_SIZE];
	int size;
}queue_linerlist;

//
queue_linerlist* Init_queue_linerlist();

void Push_queue_linerlist(queue_linerlist* queue, void* data);

void* Front_queue_linerlist(queue_linerlist* queue);

void Pop_queue_linerlist(queue_linerlist* queue);

void* Back_queue_linerlist(queue_linerlist* queue);

int Size_queue_linerlist(queue_linerlist* queue);

void Clear_queue_linerlist(queue_linerlist* queue);

void Free_queue_linerlist(queue_linerlist* queue);

 queue_linerlist.cc 

#include "queue_linerlist.h"

queue_linerlist* Init_queue_linerlist()
{
	queue_linerlist* queue = (queue_linerlist*)malloc(sizeof(queue_linerlist));
	for (int i = 0; i < MAX_SIZE; ++i) {
		queue->data[i] = NULL;
	}
	queue->size = 0;
	return queue;
}

void Push_queue_linerlist(queue_linerlist* queue, void* data)
{
	if (queue == NULL) { return; }
	if (data == NULL) { return; }
	if (queue->size == MAX_SIZE) { return; }
	queue->data[queue->size] = data;
	queue->size++;
}

void* Front_queue_linerlist(queue_linerlist* queue)
{
	if (queue == NULL) { return NULL; }
	if (queue->size == 0) { return NULL; }
	return queue->data[0];
}

void Pop_queue_linerlist(queue_linerlist* queue)
{
	if (queue == NULL) { return; }
	if (queue->size == 0) { return; }

	for (int i = 0; i < queue->size - 1; ++i) {
		queue->data[i] = queue->data[i + 1];
	}
	queue->size--;
}

void* Back_queue_linerlist(queue_linerlist* queue)
{
	if (queue == NULL) { return NULL; }
	if (queue->size == 0) { return NULL; }
	return queue->data[queue->size - 1];

}

int Size_queue_linerlist(queue_linerlist* queue)
{
	return queue->size;
}

void Clear_queue_linerlist(queue_linerlist* queue)
{
	if (queue == NULL) { return; }
	queue->size = 0;
}


void Free_queue_linerlist(queue_linerlist* queue) {
	if (queue == NULL) { return; }
	free(queue);
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大江东去浪淘尽千古风流人物

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值