C语言- 基础数据结构和算法 - 队列的顺序存储
听黑马程序员教程《基础数据结构和算法 (C版本)》,
照着老师所讲抄的,
视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1
喜欢的朋友可以去看看,欢迎大家一起交流学习。
/*
队列:先进先出,后进后出,像排队一样。
队头:队伍的前面(出口)。
队尾:队伍的后面(入口)。
插入:从队尾插入。
出队:从队头删除。
*/
SeqQueue.h
1 #ifndef SEQQUEUE_H
2 #define SEQQUEUE_H
3
4 #include <stdio.h>
5 #include <stdlib.h>
6
7 #define MAX_SIZE 1024
8
9 // 顺序队列结构体
10 typedef struct SEQQUEUE{
11 void* data[MAX_SIZE];
12 int size;
13 }SeqQueue;
14
15
16
17 // 初始化
18 SeqQueue* Init_SeqQueue();
19
20 // 入队
21 void Push_SeqQueue(SeqQueue* queue,void* data);
22
23 // 返回队头元素
24 void* Front_SeqQueue(SeqQueue* queue);
25
26 // 出队
27 void Pop_SeqQueue(SeqQueue* queue);
28
29 // 返回队尾元素
30 void* Back_SeqQueue(SeqQueue* queue);
31
32 // 返回大小
33 int Size_SeqQueue(SeqQueue* queue);
34
35 // 清空队列
36 void Clear_SewqQueue(SeqQueue* queue);
37
38 // 销毁
39 void FreeSpace_SeqQueue(SeqQueue* queue);
40
41 #endif
SeqQueue.c
1 #include <stdio.h>
2 #include <stdlib.h>
3
4 #include "SeqQueue.h"
5
6
7 // 初始化
8 SeqQueue* Init_SeqQueue(){
9
10 // 申请内存
11 SeqQueue* queue = (SeqQueue*)malloc(sizeof(SeqQueue));
12
13 int i;
14 for(i=0;i<_MAX_EXT;i++){
15 queue->data[i]=NULL;
16 }
17 queue->size = 0;
18
19 return queue;
20 }
21
22 // 入队
23 void Push_SeqQueue(SeqQueue* queue,void* data){
24
25 if(queue==NULL){
26 return;
27 }
28 if(data==NULL){
29 return;
30 }
31 if(queue->size == _MAX_EXT){ // 位置不够了就不能插入了。
32 return;
33 }
34
35 // 把数组的左边设为“队头”,插入的时候从右边插入,也就是从尾部位置插入。
36 queue->data[queue->size] = data;
37 queue->size ++;
38
39 }
40
41 // 返回队头元素(第1个元素,也就是位置0的元素)
42 void* Front_SeqQueue(SeqQueue* queue){
43
44 if(queue == NULL){
45 return;
46 }
47 if(queue->size == 0){
48 return;
49 }
50
51 return queue->data[0];
52 }
53
54 // 出队,删除最左边(0位置)元素,然后把后面元素前移。
55 void Pop_SeqQueue(SeqQueue* queue){
56 if(queue == NULL){
57 return;
58 }
59 if(queue->size == 0){
60 return;
61 }
62 // 前移元素
63 int i;
64 for(i=0;i<queue->size-1;i++){
65 queue->data[i] = queue->data[i+1];
66 }
67
68 queue->size--;
69
70 }
71
72 // 返回队尾元素
73 void* Back_SeqQueue(SeqQueue* queue){
74 if(queue == NULL){
75 return NULL;
76 }
77 if(queue->size == 0){
78 return NULL;
79 }
80
81 return queue->data[queue->size-1];
82 }
83
84 // 返回大小
85 int Size_SeqQueue(SeqQueue* queue){
86 if(queue == NULL){
87 return -1;
88 }
89
90 return queue->size;
91 }
92
93 // 清空队列
94 void Clear_SewqQueue(SeqQueue* queue){
95 if(queue == NULL){
96 return ;
97 }
98 int i;
99 for(i=0;i<_MAX_EXT;i++){
100 queue->data[i]=NULL;
101 }
102 queue->size = 0;
103
104 }
105
106 // 销毁
107 void FreeSpace_SeqQueue(SeqQueue* queue){
108 if(queue == NULL){
109 return ;
110 }
111
112 free(queue);
113
114 }
07 队列的顺序存储20220611_main.c
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <string.h>
4
5 #include "SeqQueue.c"
6
7 /*
8 队列:先进先出,后进后出,像排队一样。
9 队头:队伍的前面(出口)。
10 队尾:队伍的后面(入口)。
11 插入:从队尾插入。
12 出队:从队头删除。
13 */
14
15 // 用户数据
16 typedef struct PWESON{
17 char name[32];
18 int age;
19 }Person;
20
21 int main(){
22 printf("好好学习,天天向上~!\t\t\t 队列的顺序存储20220611\n\n");
23
24 // 创建队列
25 SeqQueue* queue = Init_SeqQueue();
26
27 // 创建数据
28 Person p1,p2,p3,p4,p5;
29 strcpy(p1.name,"aaa");
30 strcpy(p2.name,"bbb");
31 strcpy(p3.name,"ccc");
32 strcpy(p4.name,"ddd");
33 strcpy(p5.name,"eee");
34 p1.age=18;
35 p2.age=19;
36 p3.age=20;
37 p4.age=21;
38 p5.age=22;
39
40 // 入队
41 Push_SeqQueue(queue,&p1);
42 Push_SeqQueue(queue,&p2);
43 Push_SeqQueue(queue,&p3);
44 Push_SeqQueue(queue,&p4);
45 Push_SeqQueue(queue,&p5);
46
47 // 输出队尾元素
48 Person* p_back = (Person*)Back_SeqQueue(queue);
49 printf("p_back:\nname:%s\t age:%d \n\n",p_back->name,p_back->age);
50
51 // 输出队头元素,并且出队
52 while(Size_SeqQueue(queue)>0){
53
54 // 返回队头元素
55 Person* p = (Person*)Front_SeqQueue(queue);
56 printf("name:%s\t age:%d \n",p->name,p->age);
57
58 // 出队
59 Pop_SeqQueue(queue);
60
61 }
62
63 // 销毁
64 FreeSpace_SeqQueue(queue);
65 printf("\n\n");
66 system("pause");
67 return 0;
68 }
C语言- 基础数据结构和算法 - 队列的顺序存储的更多相关文章
- C语言- 基础数据结构和算法 - 栈的顺序存储
听黑马程序员教程<基础数据结构和算法 (C版本)>, 照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友 ...
- C语言- 基础数据结构和算法 - 09 栈的应用_中缀表达式转后缀表达式20220611
09 栈的应用_中缀表达式转后缀表达式20220611 听黑马程序员教程<基础数据结构和算法 (C版本)>, 照着老师所讲抄的, 视频地址https://www.bilibili.com/ ...
- C语言- 基础数据结构和算法 - 08 栈的应用_就近匹配20220611
听黑马程序员教程<基础数据结构和算法 (C版本)>, 照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友 ...
- C语言- 基础数据结构和算法 - 栈的链式存储
听黑马程序员教程<基础数据结构和算法 (C版本)>, 照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友 ...
- C语言- 基础数据结构和算法 - 循环链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- C语言 - 基础数据结构和算法 - 企业链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- C语言 - 基础数据结构和算法 - 单向链表
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- C语言- 基础数据结构和算法 - 动态数组
听黑马程序员教程<基础数据结构和算法 (C版本)>,照着老师所讲抄的, 视频地址https://www.bilibili.com/video/BV1vE411f7Jh?p=1 喜欢的朋友可 ...
- 大数据技术之_16_Scala学习_13_Scala语言的数据结构和算法_Scala学习之旅收官之作
第十九章 Scala语言的数据结构和算法19.1 数据结构(算法)的介绍19.2 看几个实际编程中遇到的问题19.2.1 一个五子棋程序19.2.2 约瑟夫问题(丢手帕问题)19.2.3 其它常见算法 ...
随机推荐
- Input框搜索关键字高亮显示
ruleTitle(text, val) { if (!val) return text; const result = text.replace( new RegExp(val, "g&q ...
- django开发前准备工作
安装pip(python包管理器,类似npm) 安装virtualenv(python虚拟环境,可以形成一个版本隔绝的文件夹) virtualenv使用方法 1,virtualenv project ...
- DC-1 靶机渗透
DC-1 靶机渗透 *概况*: 下载地址 https://www.vulnhub.com/entry/dc-1,292/ *官方描述:* DC-1 is a purposely built vulne ...
- IDEA小技巧:Debug条件断点
今天给大家分享一个IDEA调试过程中的一个小技巧. 先来说说场景,你有没有碰到类似的情况,一个循环结构里,中间某一个情况可能会出错.比如下面的代码结果中,可能执行到第27次的时候,会出现问题. for ...
- SpringMVC的数据响应方式
1.页面跳转 *直接返回字符串 *通过ModelAndView对象返回 2.回写数据 *直接返回字符串 *返回对象或集合
- gin框架使用【1.Hello World】
package mainimport ( "github.com/gin-gonic/gin")func main() { router := gin.Default() rout ...
- linux 文件系统损坏修复
系统突然掉电,导致重启后文件系统损坏,由于是测试服务器,长时间没关注,磁盘还满了.CRT登录rz文件时候发现报错,然后重启时候linux报错 /dev/VolGroup00/LogVo100: UNE ...
- 2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意)
2021.08.16 P1363 幻象迷宫(dfs,我感受到了出题人浓浓的恶意) P1363 幻象迷宫 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题意: 幻象迷宫可以认为是无限 ...
- 【已解决】Redis错误:Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成。
报错:redis服务在window下启动,报错: Could not create server TCP listening socket 127.0.0.1:6379: bind: 操作成功完成. ...
- 掌握AI学习路上核心理论知识,你绝对不能错过这份最全资料包
人工智能成为当下科技发展的代表之一,持续受到了不少追捧,不管你是否是这一专业的学生或者职场人,学习并掌握一项新潮技能总是不会被同龄人淘汰的.我曾经问过别人.也被别人问过关于学习人工智能(AI)最好的方 ...