📄 stack.h
字号:
#include<iostream.h>
#include<string.h>
#include<stdlib.h>
const int length=30;
const int capacity=100;
struct node
{
int encode;
int readdr;//short for relative address
char name[length];
int namelen;
int value;
node(){
for(int i=0;i<length;i++)
name[i]='\0';
}
};
class stack1
{
private:
node array[capacity];
int size;
public:
stack1()
{
size=0;
}
int getsize()
{
return size;
}
void push(node nod)
{
array[size].encode=nod.encode;
array[size].readdr=size;
array[size].namelen=nod.namelen;
array[size].value=nod.value;
for(int i=0;i<nod.namelen;i++)
array[size].name[i]=nod.name[i];
array[size].name[i]='\0';
size++;
}
node pop()
{
if(size>0)
{
node temp=array[size-1];
size--;
return temp;
}
else
{
cout<<"pop--栈到底了,读取发生错误!"<<endl;
exit(0);
}
}
node peek(int pos)
{
if(pos>=0&&pos<size)
{
return array[pos];
}
else
{
cout<<"npeek--参数越界,发生错误!"<<endl;
exit(0);
}
}
int search(char str[],int len,int &fla)
{
int flag;
for(int i=0;i<size;i++)
{
flag=1;
if(strlen(array[i].name)!=strlen(str))
flag=0;
for(int j=0;j<len&&flag;j++)
if(array[i].name[j]!=str[j])
{
flag=0;
}
if(flag==1)
break;
}
if(i<size)
return array[i].value;
fla=(2-fla)/2;//区分当结果恰好也为-1时的情况!
return -1;
}
int peekall()
{
int sum=0;
for(int i=0;i<size;i++)
{
cout<<array[i].name;
sum+=array[i].namelen;
}
return sum;
}
};
struct block
{
char op;
char v1[length/3],v2[length/3];
char result[length/3];
};
class stack2
{
private:
block array[capacity/2];
int size;
public:
stack2()
{
size=0;
}
void push(block nod)
{
array[size].op=nod.op;
for(int i=0;i<length/3;i++)
{
array[size].v1[i]=nod.v1[i];
array[size].v2[i]=nod.v2[i];
array[size].result[i]=nod.result[i];
}
size++;
}
block peek(int pos)
{
if(pos>=0&&pos<size)
{
return array[pos];
}
else
{
cout<<"b参数越界!"<<endl;
exit(0);
}
}
block pop()
{
if(size>0)
{
block temp=array[size-1];
size--;
return temp;
}
else
{
cout<<"bpeek--参数越界,发生错误!"<<endl;
exit(0);
}
}
int getsize()
{
return size;
}
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -