当前位置:文档之家› (完整word版)顺序栈基本操作实验报告

(完整word版)顺序栈基本操作实验报告

Status push_operate(SqStack &s,SElemType e);
Status push_num(SqStack &s,int e);
Status Stackempty(SqStack &s);
Status pop_num(SqStack &s,int &c);
Status pushoperate(SElemType operate);
{
Push(S,c);
}
GetTop(S,c);
cout<<"栈顶元素为:"<<c<<endl;
//ClearStack (S);
//DsetroyStack(S);
for(int i=0;S.top!=S.base;i++)
{
Pop(S,c);
cout<<"栈中第"<<i+1<<"元素的值:";
cout<<c<<endl;
char Precede(SElemType a,SElemType b);
char Operatecxz();
int m;
m=Operatecxz();
cout<<m<<endl;
return 0;
}
Status change(SElemType e)
{
int m;
m=e-48;
return m;
if(s.top==s.base)
return NO;
c=*--s.top;
return OK;
}
char GetTop(SqStack &s)
{
char c;
if(s.top==s.base)
return NO;
c=*(s.top-1);
return c;
}
Status caculate(int a,SElemType operate,int b)
}
return 0;
}
第二题:
#include<iostream>
using namespace std;
#define STACK_SIZE 100
#define STACKINCREMENT 10
#define OVERFLOW -1
#define OK 1
#define NO 0
typedef int Status;
}//Push
Status Pop(SqStack &S,SElemType &c)
//若栈不空,则删除S的栈顶元素,用c返回其值,并返回OK;否则返回ERROR
{
if(S.top==S.base)
return NO;
c=*--S.top;
return OK;
}//Pop
Status GetTop(SqStack &S,SElemType &e)
return OK;
if(c>='0'&&c<='9')
return NO;
return -1;
}
char Precede(SElemType a,SElemType b)
{
if(a=='+'||a=='-')
{
if(b=='+'||b=='-'||b==')'||b=='#')
return '>';
if(!s.base)
exit(OVERFLOW);
s.top=s.base+s.stacksize;
s.stacksize+=STACKINCREMENT;
}
*s.top++=e;
return OK;
}
Status push_operate(SqStack &s,SElemType e)
{
if(s.top-s.base>=s.stacksize)
b)是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。
c)若是其它字符,则返回错误信息。
(3)若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。
程序中应主要包含下面几个功能函数:
l void initstack():初始化堆栈
l int Make_str():语法检查并计算
} SqStack;
Status Initstack(SqStack &S)//构造一个空栈S
{
S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType));
if(!S.base)
exit(OVERFLOW);
S.top=S.base;
S.stacksize= STACK_INIT_SIZE;
Status pushnum(SElemType num);
Status caculate(SElemType a,SElemType operate,SElemType b);
Status pop_operate(SqStack &s,SElemType &c);
Status change(SElemType e);
if(b=='*'||b=='/'||b=='(')
return '<';
}
if(a=='*'||a=='/')
{
if(b=='+'||b=='-'||b==')'||b=='*'||b=='/'||b=='#')
return '>';
if(b=='(')
return '<';
}
if(a=='(')
{
if (S.top==S.base)
return NO;
e=*(S.top-1);
return OK;
}//GetTop
int main()
{
SqStack S;
Initstack(S);
cout<<"输入要压到栈中的元素!"<<endl;
char c;
while((c=getchar())!='\n')
}
*s.top++=e;
return OK;
}
Status pop_operate(SqStack &s,SElemType &c)
{
if(s.top==s.base)
return NO;
c=*--s.top;
return OK;
}
Status pop_num(SqStack &s,int &c)
{
第一题:
#include <iostream>
using namespace std;
#define STACK_INIT_SIZE 100 //存储空间初始分配量
#define STACKINCREMENT 10 //存储空间分配增量
#define OVERFLOW -1
#define OK 1
#define NO -1
数据结构实验三
课程数据结构实验名称顺序栈基本操作第页
专业班级学号
姓名
实验日期:年月日评分
一、实验目的
1.熟悉并能实现栈的定义和基本操作。
2.了解和掌握栈的应用。
二、实验要求
1.进行栈的基本操作时要注意栈"后进先出"的特性。
2.编写完整程序完成下面的实验内容并上机运行。
3.整理并上交实验报告。
三、实验内容
{
if(b==')')
return '=';
if(b=='+'||b=='-'||b=='*'||b=='/')
return '<';
if(b=='#')
return ' ';
}
if(a==')')
{
if(b==')')
return ' ';
if(b=='+'||b=='-'||b=='*'||b=='/'||b=='('||b=='#')
1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行清空、销毁、入栈、出栈以及取栈顶元素操作。
2.编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。
主要功能描述如下:
(1)从键盘上输入表达式。
(2)分析该表达式是否合法:
a)是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。
}
Status Initstack(SqStack &s)
{
s.base=(SElemType *)malloc(STACK_SIZE*sizeof(SElemType));
相关主题