当前位置: 首页 > wzjs >正文

网站开发制作合同百度投诉热线中心客服

网站开发制作合同,百度投诉热线中心客服,现在用什么软件做网站,java就是做网站的吗文章目录 一,问题描述二,基本要求三,算法分析(一)链栈的存储结构设计(二)链栈基本操作的时间复杂度分析(三)括号匹配算法分析 四,示例代码五,实验…

文章目录

  • 一,问题描述
  • 二,基本要求
  • 三,算法分析
    • (一)链栈的存储结构设计
    • (二)链栈基本操作的时间复杂度分析
    • (三)括号匹配算法分析
  • 四,示例代码
  • 五,实验操作
  • 六,运行效果


一,问题描述

在处理算术表达式时,括号的正确配对至关重要。若括号配对不正确,可能会导致表达式的运算逻辑出现错误。本任务旨在编写一个函数 correct(char *exp, int max),该函数能判别给定的算术表达式中圆括号 ()、方括号 [] 和花括号 {} 是否正确配对。输入参数为表达式和表达式的长度,函数将根据括号配对情况给出相应结果。

二,基本要求

(1)设计链栈的存储结构:设计一种合适的链栈存储结构,它要能有效存储括号信息,包含数据域和指向下一个节点的指针域,方便进行进栈、出栈等操作。
(2)编写基于链栈的初始化栈(InitStack)、进栈(push)、出栈(pop)、判断栈空(StackEmpty)等函数
- 初始化栈(InitStack):创建一个空的链栈,为后续操作做好准备。
- 进栈(push):将新的括号元素添加到链栈的顶部。
- 出栈(pop):移除链栈顶部的元素,并返回该元素。
- 判断栈空(StackEmpty):检查链栈是否为空。
(3)完善括号匹配算法,改写主函数,编写求解括号匹配问题的完整程序:利用链栈的操作,设计一个完整的括号匹配算法。在算法中,遍历表达式中的每个字符,遇到左括号时将其进栈,遇到右括号时,检查栈顶元素是否为对应的左括号,若是则出栈,若不是则说明括号不匹配。最后检查栈是否为空,若为空则说明括号全部匹配。改写主函数,调用 correct 函数并输出结果。
(4)设计测试数据,上机调试、测试,保存和打印测试结果,对测试结果进行分析:设计多种测试用例,包括括号完全匹配、部分匹配、不匹配等情况。上机运行程序,输入测试用例,记录测试结果。分析测试结果,检查程序是否能正确判断各种情况下括号的匹配情况。

三,算法分析

(一)链栈的存储结构设计

使用一个结构体来表示链栈的节点,包含一个字符类型的数据域用于存储括号,以及一个指向下一个节点的指针域。同时,使用一个指向栈顶节点的指针来表示链栈。

(二)链栈基本操作的时间复杂度分析

  • 初始化栈(InitStack):只需将栈顶指针置为 NULL,时间复杂度为 O ( 1 ) O(1) O(1)
  • 进栈(push):创建一个新节点,将其插入到栈顶,时间复杂度为 O ( 1 ) O(1) O(1)
  • 出栈(pop):移除栈顶节点,时间复杂度为 O ( 1 ) O(1) O(1)
  • 判断栈空(StackEmpty):检查栈顶指针是否为 NULL,时间复杂度为 O ( 1 ) O(1) O(1)

(三)括号匹配算法分析

遍历表达式中的每个字符,对于每个字符:

  • 如果是左括号((, [, {),将其进栈。
  • 如果是右括号(), ], }),检查栈是否为空:
    • 若栈为空,说明右括号没有对应的左括号,括号不匹配。
    • 若栈不为空,检查栈顶元素是否为对应的左括号:
      • 若是,将栈顶元素出栈。
      • 若不是,说明括号不匹配。

遍历完表达式后,检查栈是否为空:

  • 若栈为空,说明所有左括号都有对应的右括号,括号匹配。
  • 若栈不为空,说明有左括号没有对应的右括号,括号不匹配。

该算法的时间复杂度为 O ( n ) O(n) O(n),其中 n n n 是表达式的长度,因为只需要遍历一次表达式。空间复杂度为 O ( n ) O(n) O(n),在最坏情况下,表达式中的所有左括号都需要进栈。

四,示例代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>#define MAXN 100// 链栈节点结构体
typedef struct StackNode {char data;struct StackNode *next;
} StackNode;// 链栈结构体
typedef struct {StackNode *top;
} LinkStack;// 初始化栈
void InitStack(LinkStack *S) {S->top = NULL;
}// 判断栈是否为空
int StackEmpty(LinkStack *S) {return S->top == NULL;
}// 入栈操作
void Push(LinkStack *S, char e) {StackNode *newNode = (StackNode *)malloc(sizeof(StackNode));newNode->data = e;newNode->next = S->top;S->top = newNode;
}// 出栈操作
int Pop(LinkStack *S, char *e) {if (StackEmpty(S)) {return 0;}StackNode *temp = S->top;*e = temp->data;S->top = temp->next;free(temp);return 1;
}// 配对函数
int correct(char *exp, int max) {int i, flag = 1;  // 括号匹配标志,1为匹配char e, x;LinkStack S;InitStack(&S);for (i = 0; i < max && flag; i++) {  // 1. 表达式未结束且括号匹配则循环x = exp[i];if (exp[i] == '(' || exp[i] == '[' || exp[i] == '{') {  // 遇左括号进栈Push(&S, x);  // 2. 左括号进栈}if (x == ')' || x == ']' || x == '}') {  // 遇右括号出栈if (!Pop(&S, &e)) {  // 3. 出栈,若出栈出错,则右括号太多,失配!flag = 0;} else if ((x == ')' && e != '(') || (x == ']' && e != '[') || (x == '}' && e != '{')) {flag = 0;  // 括号不匹配}}}if (!StackEmpty(&S)) {  // 4. 表达式扫描完毕,若栈非空则左括号太多,失配!flag = 0;}return flag;
}// 主函数
int main() {char exp[MAXN];  // 定义表达式存储数组while (1) {printf("请输入表达式,输入0退出:");fgets(exp, MAXN, stdin);  // 从标准输入中读取表达式exp[strcspn(exp, "\n")] = 0;  // 去除换行符if (strcmp(exp, "0") == 0) {break;}if (correct(exp, strlen(exp)) == 0) {  // 调用匹配函数,判断是否匹配printf("表达式内容为:\n%s\n表达式括号不匹配\n", exp);} else {printf("表达式括号匹配\n");}}return 0;
}    

五,实验操作

1.双击程序图标,启动程序。
在这里插入图片描述

2.新建项目。
在这里插入图片描述
3.选择”空项目“——输入项目名称——单击”确认“按钮。
在这里插入图片描述
4.右击”源文件“——”添加“——选择”新建项“。
在这里插入图片描述

5.选择”C++文件“——输入文件名——单击”添加“按钮。
在这里插入图片描述
6.编写代码。
在这里插入图片描述

7.编译代码。
在这里插入图片描述

8.查看编译结果。
在这里插入图片描述

9.单击绿色小三角,运行项目。
在这里插入图片描述

六,运行效果

1.编写程序后运行的效果。
在这里插入图片描述

http://www.dtcms.com/wzjs/496273.html

相关文章:

  • 新型电子产品代理加盟湘潭网站seo磐石网络
  • 如何编辑做网站微信小程序开发多少钱
  • 购物网站每个模块主要功能互联网营销师培训机构哪家好
  • 精仿源码社区网站源码百度代发排名
  • 做网站用的到java吗拼多多关键词优化是怎么弄的
  • 百度不收录哪些网站吗上海知名网站制作公司
  • 2008iis 网站 打不开百度入口网站
  • 高端大气网站建设淘宝代运营1个月多少钱
  • 用jsp做留言板网站天津网站建设优化
  • 安卓市场app下载镇江优化推广
  • 大作设计网站是中国的吗福州百度首页优化
  • 邯郸信息港邯郸信息网seo排名优化方法
  • 站长一般几个网站站长seo推广
  • 手机浏览器网站开发杭州网络推广外包
  • 济宁网站建设价格杭州seo网站推广排名
  • 四川省住房和城乡建设厅官网查询seo推广顾问
  • wordpress弹窗客服seo学习论坛
  • 郑州手机网站制作公司哪家好品牌营销推广公司
  • 做网站主流用什么语言google首页
  • 政务网站建设交流发言现在最好的营销方式
  • 怎么做免费的网站推广排名优化怎么做
  • 交友网站建设策划方案(2)网站服务器搭建与管理
  • 网站维护中页面最近新闻摘抄
  • 哪里有做网站服务商百度教育
  • 建设网站要多久的时间专门开发小程序的公司
  • 项目从立项到结束的流程图seo查询系统源码
  • 网站关键词锚文本指向上海优化外包公司排名
  • 国内免费的建网站平台昆明网络推广方式有哪些
  • wordpress网站打开满湖北短视频seo营销
  • 黄海军事最新消息宁波seo外包推广排名