码迷,mamicode.com
首页 > 其他好文 > 详细

c——队列

时间:2019-05-04 00:25:11      阅读:109      评论:0      收藏:0      [点我收藏+]

标签:position   tty   create   访问   code   eof   osi   element   条件   

循环队列

一、顺序存储

 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 typedef int ElementType;
 4 typedef int Position;
 5 typedef struct QNode * PtrToQNode;
 6 struct QNode{
 7     ElementType * Data;
 8     Position Front,Rear;
 9     int MaxSize;
10 };
11 typedef PtrToQNode Queue;
12 //创建队列 
13 Queue CreateQueue(int MaxSize){
14     Queue Q = (Queue)malloc(sizeof(struct QNode));
15     Q->Data = (ElementType*)malloc(MaxSize*sizeof(ElementType));
16     Q->Front=Q->Rear=0;
17     Q->MaxSize=MaxSize;
18     return Q;
19 } 
20 bool IsFull(Queue Q){
21     return((Q->Rear+1)%Q->MaxSize==Q->Front);
22 }
23 //插入元素 
24 bool AddQ(Queue Q,ElementType X){
25     if(IsFull(Q)){
26         printf("队列满");
27         return false;
28     }else{
29         Q->Rear=(Q->Rear+1)%Q->MaxSize;
30         Q->Data[Q->Rear]=X;
31         return true;
32     }
33 }
34 bool IsEmpty(Queue Q){
35     return(Q->Front==Q->Rear);
36 }
37 //删除元素 
38 ElementType DeleteQ(Queue Q){
39     if(IsEmpty(Q)){
40         printf("队列空");
41         return -1;
42     }else{
43         Q->Front=(Q->Front+1)%Q->MaxSize;
44         return Q->Data[Q->Front];
45     }
46 }
47 int main(){
48     Queue que;
49     que=CreateQueue(5);
50     AddQ(que,10);
51     AddQ(que,20);
52     AddQ(que,30);
53     printf("%d",DeleteQ(que));
54     printf("%d",DeleteQ(que));
55     printf("%d",DeleteQ(que));
56 }

分析:

1、定义结构:数据Data[];头尾结点Front、Rear;容量MaxSize

2、创建:为队列结构和数据申请空间,数据通过结构中的指针访问;头尾指针归零

3、插入删除:判断空满;尾入头出

4、注意是循环队列,空满判断条件要取余

c——队列

标签:position   tty   create   访问   code   eof   osi   element   条件   

原文地址:https://www.cnblogs.com/cxc1357/p/10807059.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!