数组实现队列
數組實現隊列結構:
相對棧結構要難搞一些,隊列的先進先出的,需要一個數組和三個變量,size記錄已經進來了多少個元素,不需要其它萌新看不懂的知識。
觸底反彈,頭尾追逐的感覺。
循環使用數組。
具體解釋一下觸底反彈:當我們的隊頭已經到了數組的底,我們就把對頭設為數組的第一個元素,對于隊尾也是一樣。實現了對數組的循環使用。
#include<stdio.h> #include<stdbool.h> #define maxsize 10 typedef int datatype; typedef struct queue {datatype arr[maxsize];int a,b,size;//頭、尾、數量 }queue; queue s; void init()//初始化 {s.a=0;s.b=0;s.size=0; } int Empty()//判空 {if(s.size==0)return 1;return 0; } int full()//判滿 {if(s.size==maxsize)return 1;return 0; } datatype peek()//查看隊頭 {if(s.size!=0)return s.arr[s.a];printf("queue is null\n"); } datatype poll()//彈出隊頭 {int temp=s.a;if(s.size!=0){s.size--;s.a=s.a==maxsize-1? 0 :s.a+1;//觸底反彈return s.arr[temp];}printf("queue is null\n"); } int push(datatype obj)//放入隊尾 {if(s.size!=maxsize){s.size++;s.arr[s.b]=obj;s.b=s.b==maxsize-1? 0 : s.b+1;//觸底反彈return 1;}printf("queue is full\n");return 0; } //測試 int main() {int i;init();if(Empty())printf("null\n");for(i=0;i<20;i++)push(i);while(!Empty()){printf("%d\n",poll());}printf("%d",poll()); }?
總結
- 上一篇: 树和二叉树【数据结构】
- 下一篇: 常见漏洞