• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

简单队列c语言实现

原作者: [db:作者] 来自: [db:来源] 收藏 邀请
 1 /*
 2 队列queue:特殊的有序表,插入在表的一端,删除在表的另一端 
 3 特点:先进先出(fifo) 
 4 简单队列:
 5     缺点:在会导致队列(右进左出)一直移动右移,直到队列满。
 6     当队列满时,需要重新移动到最初始位置 才能继续使用。
 7 指针: 后部:rear
 8       前部  front 
 9 队列空:front=rear;前部等于后部时
10  队列满;rear=MAX_QUEUE_SIZE-1
11  如  进 rear->edbca->front 出 
12             【    】rear和front都是相对于栈来说的 
13 数组位置:              值                         
14 3                       4  rear=3                 4    rear=3 
15 2                       3                        3    
16 1                       2                            front=2 
17 0                       1
18 -1=rear=front   入队列: front=-1        出队列: 
19 */ 
20 #include<stdio.h>
21 
22 #define MAX_QUEUE_SIZE 100
23 typedef struct{
24     int key;
25     //other fields
26 }element;
27 
28 element queue[MAX_QUEUE_SIZE];
29 
30 
31 void Addq(int *rear,element item)
32 {
33     if(*rear==MAX_QUEUE_SIZE-1){
34         printf("队列满"); 
35         return ; 
36     }
37     queue[++*rear]=item;
38 }
39 
40 element Deleteq(int *front,int rear)//删除的时候rear不变只有front动所以传道rear的值 
41 {
42     if(*front == rear){
43         printf("队列空");
44     }
45     return queue[++*front];
46 }
47 
48 bool IsFullq(int *rear)
49 {
50     if(*rear==MAX_QUEUE_SIZE-1){
51         return 1; 
52     }
53     else
54         return 0; 
55 }
56 
57 bool IsEmptyq(int *front,int rear)
58 {
59     if(*front == rear){
60         return 1;
61     }
62     return 0;
63 }
64 
65 int main()
66 {
67     element item;
68     
69     int front,rear;
70     int i;
71     
72     rear=front=-1;
73     if(IsEmptyq(&front,rear)){
74         printf("\n入队列:\n");
75         item.key=0;
76         for(i=0;i<30;i++){
77             if(!IsFullq(&rear)){
78                 Addq(&rear,item);
79                 printf("%d\n",item.key++);
80             }
81             else
82                 break;
83         }
84     }
85     printf("\n出队列\n"); 
86     while(!IsEmptyq(&front,rear)){
87         printf("%d\n",Deleteq(&front,rear).key);
88     }
89     printf("\n队列为空\n"); 
90     
91     return 0;
92 }
93 
94  

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
CodeForces710CMagicOddSquare(n阶奇幻方)发布时间:2022-07-13
下一篇:
C++之字符串表达式求值发布时间:2022-07-13
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap