数据结构学习第七天
时间:2019-08-22
本文章向大家介绍数据结构学习第七天,主要包括数据结构学习第七天使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
14:32:26 2019-08-22
学习
队列的数组实现
QueueInArray.h
1 #ifndef _QUEUE_IN_ARRAY 2 #define _QUEUE_IN_ARRAY 3 struct AQueue; 4 typedef struct AQueue* Queue; 5 6 int IsEmpty(Queue Q); 7 int IsFull(Queue Q); 8 Queue CreateAQueue(int MaxSize); 9 void DisposeAQueue(Queue Q); 10 void MakeEmpty(Queue Q); 11 void Enquence(int Element, Queue Q); 12 int Front(Queue Q); 13 void Dequence(Queue Q); 14 int FrontAndDequence(Queue Q); 15 #endif // !_QUEUE_IN_ARRAY
QueueInArray.h
1 #include"QueueInArray.h" 2 #include<malloc.h> 3 #include<stdio.h> 4 struct AQueue 5 { 6 int Capacity; 7 int Front; 8 int rear; 9 int Size; 10 int* Array; 11 }; 12 static int Succ(int Value, Queue Q) 13 { 14 if (Value < Q->Capacity) 15 return Value; 16 else if (IsFull(Q)) 17 { 18 printf("Queue is Full\n"); 19 return -1; 20 } 21 return 0; 22 } 23 24 int IsEmpty(Queue Q) 25 { 26 return Q->Size == 0; 27 } 28 29 int IsFull(Queue Q) 30 { 31 return Q->Size == Q->Capacity; 32 } 33 34 Queue CreateAQueue(int MaxSize) 35 { 36 Queue Q = (Queue)malloc(sizeof(struct AQueue)); 37 Q->Capacity = MaxSize; 38 Q->Array = (int*)malloc(sizeof(int) * MaxSize); 39 MakeEmpty(Q); 40 return Q; 41 } 42 43 void DisposeAQueue(Queue Q) 44 { 45 free(Q->Array); 46 free(Q); 47 } 48 49 void MakeEmpty(Queue Q) 50 { 51 Q->Size = 0; 52 Q->Front = 1; 53 Q->rear = 0; 54 } 55 56 void Enquence(int Element, Queue Q) 57 { 58 if (IsFull(Q)) 59 { 60 printf("Queue is Full\n"); 61 return; 62 } 63 else 64 { 65 Q->rear = Succ(++Q->rear,Q); 66 Q->Array[Q->rear] = Element; 67 Q->Size++; //这边将 Size++写在最后 因为在Succ的检测中会使用IsFull来进行判断 68 } 69 } 70 71 int Front(Queue Q) 72 { 73 return Q->Array[Q->Front]; 74 } 75 76 void Dequence(Queue Q) 77 { 78 if (IsEmpty(Q)) 79 { 80 printf("Queue is Empty\n"); 81 return; 82 } 83 else 84 { 85 Q->Front=Succ(++Q->Front,Q); 86 Q->Size--; 87 } 88 } 89 90 int FrontAndDequence(Queue Q) 91 { 92 if (IsEmpty(Q)) 93 { 94 printf("Queue is Empty\n"); 95 return -1; 96 } 97 else 98 { 99 int Element = Q->Array[Q->Front]; 100 Dequence(Q); 101 return Element; 102 } 103 }
main.c
1 #include<stdio.h> 2 #include"QueueInArray.h" 3 4 int main() 5 { 6 Queue Q = NULL; 7 Q = CreateAQueue(4); 8 printf("%10d %10d\n", IsEmpty(Q), IsFull(Q)); 9 Enquence(20, Q); 10 printf("%10d %10d\n", Front(Q), IsEmpty(Q)); 11 Enquence(25, Q); 12 Enquence(30, Q); 13 Enquence(45, Q); 14 printf("%10d %10d\n",Front(Q), IsEmpty(Q)); 15 Dequence(Q); 16 Dequence(Q); 17 printf("%10d\n", FrontAndDequence(Q)); 18 printf("%10d\n", FrontAndDequence(Q)); 19 DisposeAQueue(Q); 20 return 0; 21 }
测试:
原文地址:https://www.cnblogs.com/57one/p/11395124.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- python六十四课——高阶函数练习题(二)
- python六十四课——高阶函数练习题(三)
- Jenkins+Maven+Svn实现代码自动打包与发布
- python六十五课——单元测试(一)
- python六十六课——单元测试(二)
- Linux企业生产常见问题集合(一)答案
- python六十八课——网络编程之UDP协议
- python六十九课——网络编程之TCP协议
- Linux扩容分区操作过程
- python第七十课——python2与python3的一些区别
- Linux运维必会的100道MySql面试题之(一)
- Linux运维必会的100道MySql面试题之(二)
- Apache服务的反向代理及负载均衡配置
- Linux系统集群架构线上项目配置实战(二)
- Linux系统集群架构线上项目配置实战(三)