
江苏开放大学 形成性考核 平时作业 参考答案 标准答案
关注【江开搜题】微信公众号 发送题目获取标准答案
江苏开放大学2023年秋数据结构与算法形成性考核作业二
文档预览
文本预览
总页数:约10页 总字数:约3763字
江苏开放大学实验报告
学 号:
姓 名:
课程代码: 060220
课程名称:
数据结构与算法
评阅教师:
许小媛
实验名称:栈和队列的应用
一、实验目的及要求
1. 熟练掌握栈和队列的结构,以及这两种数据结构的特点;
2. 能够在两种存储结构上实现栈的基本运算,特别注意栈满栈空的判断条件和描述方法;
3. 熟练掌握链队列和循环队列的基本运算,特别注意队列满和队列空的判断条件和描述方法。
二、实验内容
1. 简述队列和堆栈这两种数据类型的相同点和差异处。
2. 试写一个判别表达式中开、闭括号是否配对出现的算法。
以下是一个判别表达式中开、闭括号是否对出现的算法的示例实现:
1. 创建一个空栈 stack。
2. 遍历表达式的每个字符:
- 如果字符是开括号('('、'['、'{'), 将其压入栈。
- 如果字符是闭括号(')'、']'、'}'):
- 如果栈为空,返回 false,因为这意味着没有配对的开括号。
1
- 否则,从栈顶弹出一个元素。
- 检查弹出的元素是否是与当前闭括号匹配的开括号。如果不匹配,返回 false。
3. 循环结束后,如果栈为空,则表达式中的开、闭括号完全配对。否则,返回 false。
4. 返回 true 或 false,表示表达式中的开、闭括号是否配对出现。
以下是在 C 语言编译环境下的一个示例代码现:
```c
#include <stdbool.h>
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
bool is_valid_expression(const char* expression) {
char stack[MAX_SIZE];
int top = -1;
for (int i = 0; expression[i] != '\0'; i++) {
char current = expression[i];
if (current == '(' || current == '[' || current == '{') {
// 如果是开括号,入栈
stack[++top] = current;
} else if (current == ')' || current == ']' || current == '}') {
// 如果是闭括号
if (top == -1) {
// 栈为空,说明没有配对的开括号
2
总页数:10
微信扫码添加好友
如二维码无法识别,可拨打 13662661040 咨询。