百年教育职业培训中心 百年教育学习服务平台
题库试卷

江苏开放大学2023年秋数据结构与算法形成性考核作业二

来源: 更新时间:

江苏开放大学形成性考核平时作业参考答案标准答案关注【江开搜题】微信公众号发送题目获取标准答案江苏开放大学2023年秋数据结构与算法形成性考核作业二文档预览文本预览总页数:约10页总字数:约3763字江

江苏开放大学  形成性考核  平时作业  参考答案   标准答案  

关注【江开搜题】微信公众号  发送题目获取标准答案

江苏开放大学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

电话咨询