酷代码 AI
菜单
全部AI  /  热门  /  AI写代码神器
服务商

使用一维数组实现双栈cpp代码#include <iostream> #include <cstdlib> using namespace std; #define maxsize 10 typedef struct { int* stack; //初始化后栈内均为0 int top[2]; // top为两个栈顶指针,记录了栈顶元素在数组中的下标。top[0]表示0栈,top[1]表示1栈 //初始情况top[0]=-1,top[1]=maxsize }dualstack; void push(dualstack &s,int i,int x) { //x表示要入栈的元素,i表示要入的栈,i取值为0和1 //当栈满时输出 “栈满” 加换行符 //请在此处填入代码 } int pop(dualstack &s,int i) { //i表示要出栈的栈,i取值为0和1 //当栈空时输出“0栈空”或“1栈空”,加换行符 //当栈空时返回0,栈非空时返回出栈元素值 //请在此处填入代码 }

int main() { dualstack s; s.stack = new int[maxsize]; s.top[0] = -1; s.top[1] = maxsize; push(s, 0, 1); push(s, 1, 2); push(s, 0, 3); push(s, 1, 4); cout << pop(s, 0) << endl; cout << pop(s, 1) << endl; cout << pop(s, 0) << endl; cout << pop(s, 1) << endl; delete[] s.stack; return 0; } void push(dualstack &s, int i, int x) { if (s.top[1] - s.top[0] == 1) { cout << "栈满" << endl; return; } if (i == 0) { s.stack[++s.top[0]] = x; } else if (i == 1) { s.stack[--s.top[1]] = x; } } int pop(dualstack &s, int i) { if (i == 0) { if (s.top[0] == -1) { cout << "0栈空" << endl; return 0; } return s.stack[s.top[0]--]; } else if (i == 1) { if (s.top[1] == maxsize) { cout << "1栈空" << endl; return 0; } return s.stack[s.top[1]++]; } } [2024-11-29 10:01:30 | AI写代码神器 | 643点数解答]

相关提问