⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stack.h

📁 这是一个制导翻译的源代码
💻 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 + -