📄 stack.h
字号:
#include<iostream.h>
const int length=100;
class stack
{
private:
int size;
char array[length];
public:
stack()
{
size=0;
}
void push(char ch)
{
if(size<length)
{
array[size]=ch;
size++;
}
else
cout<<"overflow!"<<endl;
}
int pop(char ch[],int len)
{
if(size-len>=0)
{
for(int i=0;i<len;i++)
ch[i]=array[size-len+i];
size-=len;
return len;
}
else
{
cout<<"参数错误!"<<endl;
return 0;
}
}
char peek(int pos)
{
if(pos>=0&&pos<size)
return array[pos];
return '\0';
}
void peekall()
{
for(int i=0;i<getsize();i++)
cout<<peek(i);
cout<<endl;
}
int getsize()
{
return size;
}
};
char guiyue(char ch[])
{
return 'M';
}
int isnumch(char ch)
{
return (ch>='0'&&ch<='9'||ch>='a'&&ch<='z');
}
int getrank(char ch1,char ch2)
{
if(isnumch(ch1))
ch1='i';
if(isnumch(ch2))
ch2='i';
if(ch1=='+')
{
if(ch2=='+'||ch2=='#'||ch2==')')
return 1;
else
return -1;
}
if(ch1=='*'||ch1=='^')
{
if(ch2=='^'||ch2=='('||ch2=='i')
return -1;
else
return 1;
}
if(ch1=='i'||ch1==')')
{
if(ch2=='i'||ch2=='(')
return 2;
else
return 1;
}
if(ch1=='(')
{
if(ch2=='#')
return 2;//error
else
if(ch2==')')
return 0;
return -1;
}
if(ch1=='#')
{
if(ch2=='#')
return 0;
else
if(ch2==')')
return 2;
else
return -1;
}
return 2;
//0表示等于,1表示大于,-1表示小于,2表示没有优先关系
}
int isvt(char ch)//区别参加规约的资格
{
if(ch>='a'&&ch<='z')
return 1;
if(ch>='('&&ch<='+')
return 1;
if(ch=='#'||ch=='^')
return 1;
if(ch>='0'&&ch<='9')
return 1;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -