24队列的顺序存储
Posted luanxin
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了24队列的顺序存储相关的知识,希望对你有一定的参考价值。
main.c
#define _CRT_SECURE_NO_WARNING #include<stdio.h> #include<stdlib.h> #include<string.h> #include"SeqQueue.h" typedef struct PERSON { char name[64]; int age; }Person; int main() { //创建队列 SeqQueue* queue = Init_SeqQueue(); //创建数据 Person p1 = { "aaa",10 }; Person p2 = { "bbb",20 }; Person p3 = { "ccc",30 }; Person p4 = { "ddd",40 }; Person p5 = { "eee",50 }; //数据入队列 Push_SeqQueue(queue, &p1); Push_SeqQueue(queue, &p2); Push_SeqQueue(queue, &p3); Push_SeqQueue(queue, &p4); Push_SeqQueue(queue, &p5); //输出队尾元素 Person* backPerson = (Person*)Back_SeqQueue(queue); printf("队尾元素:Name:%s Age:%d ", backPerson->name, backPerson->age); //输出 while (Size_SeqQueue(queue) > 0) { //取出队头元素 Person* p=(Person*)Front_SeqQueue(queue); printf("Name:%s Age:%d ", p->name, p->age); //从队头弹出元素 Pop_SeqQueue(queue); } //销毁队列 Free_SeqQueue(queue); printf(" "); system("pause"); return 0; }
SeqQueue.h
#ifndef SEQQUEUE_H #define SEQQUEUE_H #include<stdio.h> #include<stdlib.h> #include<string.h> #define MAX_SIZE 1024 //顺序队列结构体 typedef struct SEQQUEUE { void* data[MAX_SIZE];//无类型指针 int size; }SeqQueue; //初始化 SeqQueue* Init_SeqQueue(); //入队 void Push_SeqQueue(SeqQueue* queue, void* data); //返回队头元素 void* Front_SeqQueue(SeqQueue* queue); //出队 void Pop_SeqQueue(SeqQueue* queue); //返回队尾元素 void* Back_SeqQueue(SeqQueue* queue); //返回大小 int Size_SeqQueue(SeqQueue* queue); //清空队列 void Clear_SeqQueue(SeqQueue* queue); //销毁 void Free_SeqQueue(SeqQueue* queue); #endif
SeqQueue.c
#include"SeqQueue.h" //初始化 SeqQueue* Init_SeqQueue() { SeqQueue* queue = (SeqQueue*)malloc(sizeof(SeqQueue)); for (int i = 0; i < MAX_SIZE; i++) { queue->data[i] = NULL; } queue->size = 0; return queue; } //入队 void Push_SeqQueue(SeqQueue* 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_SeqQueue(SeqQueue* queue) { if (queue == NULL) { return NULL; } if (queue->size == 0) { return NULL; } return queue->data[0]; } //出队 void Pop_SeqQueue(SeqQueue* 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_SeqQueue(SeqQueue* queue) { if (queue == NULL) { return NULL; } if (queue->size == 0) { return NULL; } return queue->data[queue->size - 1]; } //返回大小 int Size_SeqQueue(SeqQueue* queue) { if (queue == NULL) { return -1; } return queue->size; } //清空队列 void Clear_SeqQueue(SeqQueue* queue) { if (queue == NULL) { return; } queue->size = 0; } //销毁 void Free_SeqQueue(SeqQueue* queue) { if (queue == NULL) { return; } free(queue); }
VS2015运行结果:
以上是关于24队列的顺序存储的主要内容,如果未能解决你的问题,请参考以下文章
数据结构学习笔记——队列的基本知识和顺序存储结构实现队列(顺序队列)