实验三 栈的实现及应用

一、实验实习目的及要求

运行结果

1.掌握栈的存储表示和实现
2.掌握栈的基本操作实现。
3.掌握栈在解决实际问题中的应用。


二、实验实习设备(环境)及要求(软硬件条件)

实验在计算机机房,应用软件VC++;


三、实验实习项目、内容与步骤

问题描述:设计一个程序,演示用算符优先法对算术表达式求值的过程。利用算符优先关系,实现对算术四则混合运算表达式的求值。
(1)输入的形式:表达式,例如2*(3+4)#
包含的运算符只能有’+’ 、’-’ 、’’ 、’/’ 、’(’、 ‘)’,“#”代表输入结束符;
(2)输出的形式:运算结果,例如2
(3+4)=14;
(3)程序所能达到的功能:对表达式求值并输出。


四、实验实习所得结果及分析

运行结果
分析:按照题目所提示的内容,每一段文字用代码表示出来。中间出现的一些问题:
当C优先级小于栈符号的优先级时,开始运算,运算容易出现差错,需要明确运算到哪一步结束。两个栈也需要提起设好空的条件,及“#”,不然出栈运算不知道哪里结束。然后是每出一个栈元素,都需要把栈的top指向栈的下一位。


五、实验实习结果分析和(或)源程序调试过程

#include<stdio.h>
#include<stdlib.h>
#define OK 10000
#define ERROR 10001
struct node
{
   
	int data;
	struct node *next;
};
typedef struct node Node;
 
struct stack
{
   
	Node *top;
	int count;
};
typedef struct stack Stack;
int InitStack(Stack *S)//栈初始化
{
   
	S->top = NULL;
	S->count = 0;
 
    return OK;
}
int EmptyStack(Stack *S)//判断栈是否还有元素,有返回OK
{
   
	return (S->count == 0) ? OK : ERROR;
}
 
int Push(Stack *S,int e)
{
   
    Node *p = (Node *)malloc(sizeof(Node));
    if(NULL == p)
    {
   
        return ERROR;
    }
    p->data = e;
    p->next = S->top;
    S->top = p;
    S->count++;
    
    return OK;
}
int GetTop(Stack *S)//返回栈s栈顶元素
{
   
    if(NULL == S->top)
    {
   
        return ERROR;
    }
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pitepa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值