单数组实现双端队列

xiaoxiao2021-02-28  127

#include<stdio.h> #include<iostream> using namespace std; int i = 0; void push_head(int *a, int d) {//头部插入元素 for(int j = i-1; j >= 0; j--) a[j+1] = a[j];//遍历往后推一个 a[0] = d; i++; } void push_end(int *a, int d) { a[i++] = d; } void pop_head(int *a) { if(a[i-1] == 0) cout << "队列已空\n"; else { for(int j = 0; j <= i; j++) a[j] = a[j+1];//遍历往前推一个 i--; } } void pop_end(int *a) { if(a[i-1] == 0) cout << "队列已空\n"; else { a[i-1] = 0; i--; } } void show(int *a) { cout << "该队列的元素"; for(int i = 0; i < 1000; i++) { if(a[i] != 0) printf("a[%d] = %d ", i, a[i]); } cout << endl; } int main() { int d, a[10000]; string s; while(cin >> s) { if(s == "push_end") { cin >> d; push_end(a, d); show(a); } //末尾增加一个d if(s == "push_head") { cin >> d; push_head(a, d); show(a); }//头部增加一个d if(s == "pop_head") { pop_head(a); show(a); }//删除头部元素 if(s == "pop_end") { pop_end(a); show(a); }//删除尾部元素 } }
转载请注明原文地址: https://www.6miu.com/read-40236.html

最新回复(0)