栈和队列主要的操作就是push和pop,栈的特点是“先入后出”,”从嘴里进进出出“。队列和实际站的队列差不多,从尾部插入,从队头出。”从后面进从嘴里出“ 嘿嘿嘿。。。
------------------------------------2017年9月30日11:49:33更新----------------------------------------------
要注意的是top,head,tail都指向当前要放入的位置。
比如入栈的时候top++是在放入以后进行的,所以当前的top指针存的是传入的key值。如果从1循环存到20的话就是top等于零的时候存的是1,top等于壹的时候存的是2
取的时候因为指向要放入的位置上,相当于当前有数的位置的上一位处。所以取值的时候需要先往下--然后取当前位置里面的值。
示意图:
完整代码:
#include <stdio.h> int stack[20]; int queue[20]; int top,head,tail; void push(int x){ stack[top++] = x; } int pop(){ return stack[--top]; } void enqueue(int x){ queue[tail++] = x; } int dequeue(){ return queue[head++]; } int main(){
int temp; printf("Enqueue: "); for (int i = 0; i < 10; i++){ enqueue(data[i]); printf("data:%d tail:%d ",data[i],tail); } printf("Dequeue: "); for (int j = 0; j < 10; j++){ temp = dequeue(); printf("data: %d head: %d ",temp,head); }
return 0; }