标签:直接 fun count lin 要求 err 显示 style default
官方定义:栈(Stack)是一个后进先出(Last in first out,LIFO)的线性表,它要求只在表尾进行删除和插入操作
小甲鱼的定义:所谓的栈,其实也就是一个特殊的线性表(顺序表、链表),但是它再操作上有一些特殊的要求和限制:
? ?
? ?
? ?
typedef struct { ????ElemType *base; ????ElemType *top; ????int stackSize; }sqStack; |
? ?
另一种声明方法
typedef int ElemType; typedef struct { ????ElemType data[MAXSIZE]; ????int top; //用于标注栈顶位置 ????int stackSize; } |
? ?
? ?
#define STACK_INIT_SIZE 100 initStack(sqStack *s) { ????s->base = (ElemType *)malloc( STACK_INIT_SIZE * sizeof(ElemType) ); ????if( !s->base ) ????????exit(0); ????s->top = s->base; // 最开始,栈顶就是栈底 ????s->stackSize = STACK_INIT_SIZE; } |
? ?
#define SATCKINCREMENT 10 Push(sqStack *s, ElemType e) { // 如果栈满,追加空间 if( s->top – s->base >= s->stackSize ) { s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType)); if( !s->base ) exit(0); s->top = s->base + s->stackSize; // 设置栈顶 s->stackSize = s->stackSize + STACKINCREMENT; // 设置栈的最大容量 } *(s->top) = e; s->top++; } |
? ?
? ?
Pop(sqStack *s, ElemType *e) { ????if( s->top == s->base ) // 栈已空空是也 ????return; ????*e = *--(s->top); } |
? ?
就是将栈中的元素全部作废,但栈本身的物理空间并不发生改变(不是销毁)
因此我们只要将s->top的内容赋值为s->base即可,这样s->base等于s->top,也就表明这个栈是空的了
ClearStack(sqStack *s) { ????s->top = s->base; } |
? ?
与清空栈不同,销毁一个栈是要释放带哦该栈所占据的物理内存空间
DestroyStack(sqStack *s){ ????int i, len; ????len = s->stackSize; ????for( i=0; i < len; i++ ){ ????free( s->base ); ????s->base++; ????} ????s->base = s->top = NULL; ????s->stackSize = 0; } |
? ?
s.stackSize是栈的最大容量,并不是栈的当前容量
计算栈的当前容量也就是计算栈中元素的个数,只要计算s.top - s.base即可
int StackLen(sqStack s) { ????return(s.top – s.base); // 初学者需要重点讲解 } |
? ?
? ?
计算方法: (XnXn-1……X3X2X1)2 = X1*2^0+X2*2^1+…+Xn*2^(n-1)
一个二进制数要转换为相应的十进制数,就是从最低位起用每一位去乘以对应位的积,也就是说用第n位去乘以2^(n-1),然后全部加起来
#include <stdio.h> #include <stdlib.h> #include <math.h> #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 typedef char ElemType; typedef struct { ????????ElemType *base; ????????ElemType *top; ????????int stackSize; }sqStack; void InitStack(sqStack *s) { ????????s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); ????????if( !s->base ) ????????{ ????????????????exit(0); ????????} ? ? ????????s->top = s->base; ????????s->stackSize = STACK_INIT_SIZE; } void Push(sqStack *s, ElemType e) { ????????if( s->top - s->base >= s->stackSize ) ????????{ ????????????????s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType)); ????????????????if( !s->base ) ????????????????{ ????????????????????????exit(0); ????????????????} ????????} ? ? ????????*(s->top) = e; ????????s->top++; } void Pop(sqStack *s, ElemType *e) { ????????if( s->top == s->base ) ????????{ ????????????????return; ????????} ????????*e = *--(s->top); } int StackLen(sqStack s) { ????????return (s.top - s.base); } int main() { ????????ElemType c; ????????sqStack s; ????????int len, i, sum = 0; ????????InitStack(&s); ????????printf("请输入二进制数,输入#符号表示结束!\n"); ????????scanf("%c", &c); ????????while( c != ‘#‘ ) ????????{ ????????????????Push(&s, c); ????????????????scanf("%c", &c); ????????} ????????getchar(); // 把‘\n‘从缓冲区去掉 ????????len = StackLen(s); ????????printf("栈的当前容量是: %d\n", len); ????????for( i=0; i < len; i++ ) ????????{ ????????????????Pop(&s, &c); ????????????????sum = sum + (c-48) * pow(2, i); ????????} ????????printf("转化为十进制数是: %d\n", sum); ????????return 0; |
? ?
一个十六进制数最多占4bit,一个字节(8bit)刚好用两个十六进制数完全表示,节省了显示空间
#include <stdio.h> #include <stdlib.h> #include <math.h> #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 typedef char ElemType; typedef struct { ????????ElemType *base; ????????ElemType *top; ????????int stackSize; }sqStack; // 函数功能:初始化栈 // 参数*s:栈的地址 void InitStack(sqStack *s) { ????????s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); ????????if( !s->base ) ????????{ ????????????????exit(0); ????????} ? ? ????????s->top = s->base; ????????s->stackSize = STACK_INIT_SIZE; } // 函数功能:入栈操作 // 参数*s:栈的地址 // 参数e:待压入栈的元素 void Push(sqStack *s, ElemType e) { ????????if( s->top - s->base >= s->stackSize ) ????????{ ????????????????s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType)); ????????????????if( !s->base ) ????????????????{ ????????????????????????exit(0); ????????????????} ? ? ????????????????s->top = s->base + s->stackSize; ????????????????s->stackSize = s->stackSize + STACKINCREMENT; ????????} ? ? ????????*(s->top) = e; ????????s->top++; } // 函数功能:弹栈操作 // 参数*s:栈的地址 // 参数e:存放从栈里弹出的数据 void Pop(sqStack *s, ElemType *e) { ????????if( s->top == s->base ) ????????{ ????????????????return; ????????} ????????*e = *--(s->top); } // 函数功能:计算栈s的当前长度 // 参数s:栈 int StackLen(sqStack s) { ????????return (s.top - s.base); } int main() { ????????ElemType c; ????????sqStack s1; ????????sqStack s2; ????????int len, i, j, sum = 0; ????????InitStack(&s1); // 初始化栈s1,用来存放二进制输入 ????????printf("请输入二进制数,输入‘#‘号表示结束!\n\n"); ????????scanf("%c", &c); ????????while( c != ‘#‘ ) ????????{ ????????????????if( c==‘0‘ || c==‘1‘ ) // 检查输入是否二进制 ????????????????????????Push(&s1, c); ????????????????scanf("%c", &c); ????????} ????????getchar(); // 把‘\n‘从缓冲区去掉 ????????len = StackLen(s1); ????????InitStack(&s2); // 初始化栈s2,用来存放转换的八进制 ????????for( i=0; i < len; i+=4 ) ????????{ ????????????????for( j=0; j < 4; j++ ) ????????????????{ ????????????????????????Pop( &s1, &c ); // 取出栈顶元素 ????????????????????????sum = sum + (c-48) * pow(2, j); ? ? ????????????????????????if( s1.base == s1.top ) ????????????????????????{ ????????????????????????????????break; ????????????????????????} ????????????????} ????????????????switch( sum ) ????????????????{ ????????????????????????case 10: sum = ‘A‘; break; ????????????????????????case 11: sum = ‘B‘; break; ????????????????????????case 12: sum = ‘C‘; break; ????????????????????????case 13: sum = ‘D‘; break; ????????????????????????case 14: sum = ‘E‘; break; ????????????????????????case 15: sum = ‘F‘; break; ????????????????????????default: sum += 48; ????????????????} ????????????????Push( &s2, sum ); ????????????????sum = 0; ????????} ????????printf("\n转化为十六进制数是: "); ????????while( s2.base != s2.top ) ????????{ ????????????????Pop( &s2, &c ); ????????????????printf("%c", c); ????????} ????????printf("(H)\n" |
进行二进制到八进制的转换时,要将二进制数的每三位抓换成一个八进制数来表示,然后按顺序输出即可
? ?
? ?
? ?
#include <stdio.h> #include <stdlib.h> #include <math.h> #define STACK_INIT_SIZE 20 #define STACKINCREMENT 10 typedef char ElemType; typedef struct { ????????ElemType *base; ????????ElemType *top; ????????int stackSize; }sqStack; // 函数功能:初始化栈 // 参数*s:栈的地址 void InitStack(sqStack *s) { ????????s->base = (ElemType *)malloc(STACK_INIT_SIZE * sizeof(ElemType)); ????????if( !s->base ) ????????{ ????????????????exit(0); ????????} ????????s->top = s->base; ????????s->stackSize = STACK_INIT_SIZE; } // 函数功能:入栈操作 // 参数*s:栈的地址 // 参数e:待压入栈的元素 void Push(sqStack *s, ElemType e) { ????????if( s->top - s->base >= s->stackSize ) ????????{ ????????????????s->base = (ElemType *)realloc(s->base, (s->stackSize + STACKINCREMENT) * sizeof(ElemType)); ????????????????if( !s->base ) ????????????????{ ????????????????????????exit(0); ????????????????} ????????????????s->top = s->base + s->stackSize; ????????????????s->stackSize = s->stackSize + STACKINCREMENT; ????????} ? ? ????????*(s->top) = e; ????????s->top++; } // 函数功能:弹栈操作 // 参数*s:栈的地址 // 参数e:存放从栈里弹出的数据 void Pop(sqStack *s, ElemType *e) { ????????if( s->top == s->base ) ????????{ ????????????????return; ????????} ????????*e = *--(s->top); } // 函数功能:计算栈s的当前长度 // 参数s:栈 int StackLen(sqStack s) { ????????return (s.top - s.base); } int main() { ????????ElemType c; ????????sqStack s1; ????????sqStack s2; ????????int len, i, j, sum = 0; ????????InitStack(&s1); // 初始化栈s1,用来存放二进制输入 ????????printf("请输入二进制数,输入‘#‘号表示结束!\n\n"); ????????scanf("%c", &c); ????????while( c != ‘#‘ ) ????????{ ????????????????if( c==‘0‘ || c==‘1‘ ) // 检查输入是否二进制 ????????????????????????Push(&s1, c); ????????????????scanf("%c", &c); ????????} ????????getchar(); // 把‘\n‘从缓冲区去掉 ????????len = StackLen(s1); ????????InitStack(&s2); // 初始化栈s2,用来存放转换的八进制 ????????for( i=0; i < len; i+=3 ) ????????{ ????????????????for( j=0; j < 3; j++ ) ????????????????{ ????????????????????????Pop( &s1, &c ); // 取出栈顶元素 ????????????????????????sum = sum + (c-48) * pow(2, j); ? ? ????????????????????????if( s1.base == s1.top ) ????????????????????????{ ????????????????????????????????break; ????????????????????????} ????????????????} ????????????????Push( &s2, sum+48 ); ????????????????sum = 0; ????????} ????????printf("\n转化为八进制数是: "); ????????while( s2.base != s2.top ) ????????{ ????????????????Pop( &s2, &c ); ????????????????printf("%c", c); ????????} ????????printf("(O)\n" |
? ?
(简称栈链)
typedef struct StackNode { ????ElemType data; // 存放栈的数据 ????struct StackNode *next; }StackNode, *LinkStackPtr; ? ? typedef struct LinkStack { ????LinkStackPrt top; // top指针 ????int count; // 栈元素计数器 } |
? ?
对于栈链的Push操作,假设元素值为e的新结点是s,top为栈顶指针
Status Push(LinkStack *s, ElemType e) { ????LinkStackPtr p = (LinkStackPtr) malloc (sizeof(StackNode)); ????p->data = e; ????p->next = s->top; ????s->top = p; ????s->count++; ????return OK; } |
? ?
对于栈链的Pop操作,假设变量p用来存储要删除的栈顶结点
将栈顶指针下移一位,最后释放p即可
Status Pop(LinkStack *s, ElemType *e) { ????LinkStackPtr p; ????if( StackEmpty(*s) ) // 判断是否为空栈 ????return ERROR; ????*e = s->top->data; ????p = s->top; ????s->top = s->top->next; ????free(p); ????s->count--; ????return OK; } |
? ?
? ?
? ?
(1-2)*(4+5) 逆波兰表达式:1 2 - 4 5 + *
数字1和2进栈,遇到减号运算符则弹出两个元素进行运算并把结果入栈
? ?
4和5入栈,遇到加号运算符,4和5弹出栈,相加后将结果9入栈
? ?
然后又遇到乘法运算符,将9和-1弹出栈进行乘法计算,此时栈空并无数据压栈,-9为最终运算结果!
? ?
从左到右遍历中缀表达式的每个数字和符号,若是数字则直接输出
若是符号,则判断其与栈顶符号的优先级,是右括号或者优先级低于栈顶符号,则栈顶元素依次出栈并输出,直到遇到左括号或栈空才将吃屎的那个符号入栈
1*(2+3)
需要注意的是:opera中操作数,越靠近栈顶,优先级越高
void PexpretoSexpre(char *ss) { ????????char num[100] = "0"; /* 存储后缀表达式 */ ????????char opera[100] = "0"; /* 存储运算符 */ ????????/* num----j opera----op ss----i */ ????????int i, j, op; ????????op = i = j = 0; ????????while (ss[i] != ‘\0‘) ????????{ ????????????????if (isdigit(ss[i])) /* 如果是数字 */ ????????????????{ ????????????????????????num[j] = ss[i]; /* 数字直接入后缀表达式栈 */ ????????????????????????j++; ????????????????????????i++; ????????????????} ????????????????else ????????????????{ ????????????????????????switch (ss[i]) /* 如果是操作数 */ ????????????????????????{ ????????????????????????case ‘+‘: ????????????????????????????????{ ????????????????????????????????????????if (op == 0) /* 如果是空栈 */ ????????????????????????????????????????{ ????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); /* 入运算符栈 */ ????????????????????????????????????????????????break; ????????????????????????????????????????} ????????????????????????????????????????if (opera[op-1] == ‘+‘ || opera[op-1] == ‘-‘ || opera[op-1] == ‘*‘ || opera[op-1] == ‘/‘ || opera[op-1] == ‘)‘ || opera[op-1] == ‘(‘) ????????????????????????????????????????{ ????????????????????????????????????????????????switch (opera[op-1]) ????????????????????????????????????????????????{ ????????????????????????????????????????????????case ‘+‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘-‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘*‘: ????????????????????????????????????????????????????????{ /* 加法优先级低于乘法 */ ????????????????????????????????????????????????????????????????num[j] = opera[op-1]; /* 将操作数出栈 */ ????????????????????????????????????????????????????????????????opera[op-1] = ss[i]; /* 将新的操作数压入栈中 */ ????????????????????????????????????????????????????????????????j++; ????????????????????????????????????????????????????????????????i++; ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘/‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????num[j] = opera[op-1]; ????????????????????????????????????????????????????????????????opera[op-1] = ss[i]; ????????????????????????????????????????????????????????????????j++; ????????????????????????????????????????????????????????????????i++; ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘(‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????} ????????????????????????????????????????} ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????case ‘-‘: ????????????????????????????????{ ????????????????????????????????????????if (op == 0) ????????????????????????????????????????{ ????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????break; ????????????????????????????????????????} ????????????????????????????????????????if (opera[op-1] == ‘+‘ || opera[op-1] == ‘-‘ || opera[op-1] == ‘*‘ || opera[op-1] == ‘/‘ || opera[op-1] == ‘)‘ || opera[op-1] == ‘(‘) ????????????????????????????????????????{ ????????????????????????????????????????????????switch (opera[op-1]) ????????????????????????????????????????????????{ ????????????????????????????????????????????????case ‘+‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘-‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘*‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????num[j] = opera[op-1]; ????????????????????????????????????????????????????????????????opera[op-1] = ss[i]; ????????????????????????????????????????????????????????????????j++; ????????????????????????????????????????????????????????????????i++; ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘/‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????num[j] = opera[op-1]; ????????????????????????????????????????????????????????????????opera[op-1] = ss[i]; ????????????????????????????????????????????????????????????????j++; ????????????????????????????????????????????????????????????????i++; ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘(‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????} ????????????????????????????????????????} ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????case ‘*‘: ????????????????????????????????{ ????????????????????????????????????????if (op == 0) ????????????????????????????????????????{ ????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????break; ????????????????????????????????????????} ????????????????????????????????????????if (opera[op-1] == ‘+‘ || opera[op-1] == ‘-‘ || opera[op-1] == ‘*‘ || opera[op-1] == ‘/‘ || opera[op-1] == ‘)‘ || opera[op-1] == ‘(‘) ????????????????????????????????????????{ ????????????????????????????????????????????????switch (opera[op-1]) ????????????????????????????????????????????????{ ????????????????????????????????????????????????case ‘+‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘-‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘*‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘/‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘(‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????} ????????????????????????????????????????} ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????case ‘/‘: ????????????????????????????????{ ????????????????????????????????????????if (op == 0) ????????????????????????????????????????{ ????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????break; ????????????????????????????????????????} ????????????????????????????????????????if (opera[op-1] == ‘+‘ || opera[op-1] == ‘-‘ || opera[op-1] == ‘*‘ || opera[op-1] == ‘/‘ || opera[op-1] == ‘)‘ || opera[op-1] == ‘(‘) ????????????????????????????????????????{ ????????????????????????????????????????????????switch (opera[op-1]) ????????????????????????????????????????????????{ ????????????????????????????????????????????????case ‘+‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘-‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘*‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘/‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????case ‘(‘: ????????????????????????????????????????????????????????{ ????????????????????????????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????????????????????????????break; ????????????????????????????????????????????????????????} ????????????????????????????????????????????????} ????????????????????????????????????????} ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????case ‘(‘: ????????????????????????????????{ ????????????????????????????????????????PushOperation(opera, ss, &op, &i); ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????case ‘)‘: /* 如果遇到右括号 */ ????????????????????????????????{ ????????????????????????????????????????while (opera[op-1] != ‘(‘) ????????????????????????????????????????{ ????????????????????????????????????????????????num[j] = opera[op-1]; /* 将运算符栈中的元素依次入栈到后缀表达式栈中,直到遇到左括号为止 */ ????????????????????????????????????????????????j++; ????????????????????????????????????????????????op--; ????????????????????????????????????????} ????????????????????????????????????????op--; ????????????????????????????????????????i++; ????????????????????????????????????????break; ????????????????????????????????} ????????????????????????default: ????????????????????????????????{ ????????????????????????????????????????printf("传入表达式不符合要求\n"); ????????????????????????????????????????exit(0); ????????????????????????????????} ?????????????????????????????????????? ? ????????????????????????} ????????????????} ????????} ????????while (op != 0) ????????{ ????????????????num[j] = opera[op-1]; /* 将运算符栈中的元素依次入栈到后缀表达式栈中 */ ????????????????j++; ????????????????op--; ????????} ????????num[j] = ‘\0‘; ????????i = 0; ????????while (num[i] != ‘\0‘) /* 将后缀表达式存储到传入的形参ss中 */ ????????{ ????????????????ss[i] = num[i]; ????????????????i++; ????????} ????????ss[i] = ‘\0‘; } /* Function: 入运算符栈*/ void PushOperation(char *opera, char *ss, int *op, int *s) { opera[*op] = ss[*s]; (*op)++; (*s)++; } |
?
标签:直接 fun count lin 要求 err 显示 style default
原文地址:https://www.cnblogs.com/kyriewx/p/12759541.html