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

收录网站的平台有哪些上海建设网站浦东新区污水管网工程

收录网站的平台有哪些,上海建设网站浦东新区污水管网工程,微信群免费推广平台,运城网站开发app文章目录 一,问题描述二,基本要求三,算法分析四,示例代码五,实验操作六,运行效果 一,问题描述 在数据处理中,常常会遇到需要对链接存储的线性表进行操作的情况。本次任务聚焦于将链…

文章目录

  • 一,问题描述
  • 二,基本要求
  • 三,算法分析
  • 四,示例代码
  • 五,实验操作
  • 六,运行效果


一,问题描述

在数据处理中,常常会遇到需要对链接存储的线性表进行操作的情况。本次任务聚焦于将链接存储的线性表进行逆置。具体来说,就是要改变线性表中结点的顺序,使得原来的最后一个结点变为新线性表的第 1 个结点,原来倒数第 2 个结点变为新线性表的第 2 个结点,依此类推,从而实现整个线性表的逆置。

二,基本要求

  1. 算法分析与设计:对链表逆置问题进行深入分析,考虑到可能存在带附加表头结点和不带附加表头结点这两种不同情况。对于带附加表头结点的链表,表头结点不存储实际数据,仅作为链表的起始标志,在逆置过程中需要特殊处理,以保证表头结点的位置和指向关系正确;对于不带附加表头结点的链表,逆置时要特别注意第一个结点的处理,以及如何正确更新指针,确保链表的完整性和正确性。分别设计出针对这两种情况的高效算法,明确算法的逻辑步骤和操作流程。
  2. 编写完整上机程序:使用 C++ 语言,根据设计好的算法,编写完整的程序代码。在程序中,要清晰地定义链表的节点结构,包括数据域和指针域。实现链表的创建、逆置以及输出等功能函数,确保函数之间的调用关系正确,代码结构清晰易读。同时,要合理处理内存分配和释放问题,避免内存泄漏。
  3. 设计测试用例并上机验证:精心设计多种测试用例,涵盖不同长度的链表、包含不同数据的链表以及特殊情况(如空链表、只有一个结点的链表等)的链表。通过上机运行程序,输入各种测试用例,观察程序的运行结果,验证程序是否能够正确地对链表进行逆置操作。
  4. 记录测试结果,对测试结果进行分析:详细记录每个测试用例的输入和输出结果,包括链表的原始状态和逆置后的状态。对测试结果进行深入分析,检查程序在不同情况下的运行是否符合预期,是否存在逻辑错误或异常情况。比较带附加表头结点和不带附加表头结点两种情况下算法的执行效率、代码复杂度等方面的差异,总结两种方法的优缺点,为今后在实际应用中选择合适的链表结构和算法提供参考。

三,算法分析

  1. 不带附加表头结点的链表逆置算法
    • 初始化三个指针:prev 指向 NULL,表示当前结点的前一个结点;curr 指向链表的头结点,即第一个实际存储数据的结点;next 用于临时存储 curr 的下一个结点。
    • 遍历链表,在每次循环中,先将 next 指向 curr 的下一个结点,然后将 currnext 指针指向 prev,更新 prevcurrcurrnext
    • curr 变为 NULL 时,说明已经遍历到链表的末尾,此时 prev 指向的就是逆置后链表的头结点,完成逆置操作。
  2. 带附加表头结点的链表逆置算法
    • 同样初始化三个指针:prev 指向附加表头结点;curr 指向附加表头结点的下一个结点,即第一个实际存储数据的结点;next 用于临时存储 curr 的下一个结点。
    • 遍历链表,在每次循环中,先将 next 指向 curr 的下一个结点,然后将 currnext 指针指向 prev,更新 prevcurrcurrnext
    • curr 变为 NULL 时,说明已经遍历到链表的末尾,此时需要将附加表头结点的 next 指针指向 prev,完成逆置操作。注意在整个过程中,附加表头结点始终存在且位置不变,只是其 next 指针指向发生了变化。

四,示例代码

#define STACK_INIT_SIZE  100    // 栈存储空间初始分配量
#define STACKINCREMENT  10     // 栈存储空间分配增量
#define OVERFLOW -1
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0#include "stdio.h"
#include "malloc.h"
#include <stdlib.h>  // 添加这一行,引入 exit 函数的定义typedef int status;
typedef char SelemType;typedef struct {                       // 顺序栈的定义SelemType *base;SelemType *top;int stacksize;
} SqStack;status InitStack(SqStack &S) {        // 构造一个空栈 SS.base = (SelemType *)malloc(STACK_INIT_SIZE * sizeof(SelemType));if (!S.base)exit(OVERFLOW);       // 存储分配失败S.top = S.base;S.stacksize = STACK_INIT_SIZE;return OK;
}status Push(SqStack &S, SelemType e) {// 插入元素 e 为新的栈顶元素if (S.top - S.base >= S.stacksize) {         // 栈满,追加存储空间S.base = (SelemType *)realloc(S.base, (S.stacksize + STACKINCREMENT) * sizeof(SelemType));if (!S.base)exit(OVERFLOW);       // 存储分配失败S.top = S.base + S.stacksize;S.stacksize += STACKINCREMENT;}*(S.top) = e;S.top++;return OK;
}status Pop(SqStack &S, SelemType &e) {// 若栈不空,则删除 S 的栈顶元素,用 e 返回其值,并返回 OK;否则返回 ERRORif (S.top == S.base)return ERROR;S.top--;e = *(S.top);return OK;
}status StackEmpty(SqStack S) {         // 判断栈 S 是否为空if (S.top == S.base)return TRUE;elsereturn FALSE;
}void conversion() {                    // 进制转换// 对于输入的任意一个非负十进制整数,打印输出与其等值的对应的进制数SqStack S;int N, d, ys;SelemType x, e;InitStack(S);                      // 构造空栈while (1) {printf("请输入一个非负十进制数(0结束):");scanf("%d", &N);if (N == 0)break;printf("请输入要转换的进制:");scanf("%d", &d);   // 2、8 或 16 进制while (N) {                    // 输出相应的符号ys = N % d;     // 求余if (ys <= 9)x = ys + '0';elsex = ys - 10 + 'A';Push(S, x);N = N / d;      // 求商}printf("转换所得%d进制数为:", d);while (!StackEmpty(S)) {              // 显示结果Pop(S, e);printf("%c", e);}printf("\n");}
}void main() {conversion();
}    

五,实验操作

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

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

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

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

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

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

六,运行效果

1.要求效果。
在这里插入图片描述

2.编写程序,运行效果。
在这里插入图片描述

http://www.dtcms.com/a/410683.html

相关文章:

  • 学校门户网站建设必要性爱趣网
  • 深入用户评测:腾讯CodeBuddy打造用户首选的AI全栈开发工具
  • 深圳网站设计制作建设微信做单页的网站
  • 基于微信小程序高仿背单词消除游戏
  • 蒸汽机革命后工业生产方式的变革与AI智能名片S2B2C商城小程序的影响
  • 山东省水利建设市场信用信息平台网站网站 系统 区别
  • 寻找集团网站建设网站怎么做搜索引擎优化_
  • 从 “有人值守” 到 “少人运维”:智能巡检机器人重塑配电室管理模式
  • Docker详解(一)Docker的核心概念及基本操作
  • R²D²深度解析:NVIDIA三大神经网络突破如何变革机器人学习
  • 企业接待机器人知识库如何分钟级构建
  • Docker 从入门到精通:全方位掌握容器化技术
  • 可以做兼职笔译的网站企业查询天眼查官网
  • framer-motion:React 动画库完全指南
  • 网站开发 面试 适当吹牛建设工程质量监理协会网站
  • BI磁吸布局 (2) 基于react-grid-layout扩展的布局方式
  • python(42) : 监听本地文件夹上传到服务器指定目录
  • c 网站建设报告外贸企业网站推广
  • 成都网站建设熊掌号网站 域名 授权服务器 分布式
  • 使用python+flask设置挡板
  • WinCC监控系统实战解析:打通物联网网关的关键步骤
  • 阜宁做网站需要多少钱厦门彩页设计
  • 【Android】 android suspend/resume总结(3)
  • 【Android】Android项目目录结构及其作用
  • 动易网站首页制作移动网站排名教程
  • 网站开发和ipv6便宜网站建设 优帮云
  • 前端笔记:HTML output标签介绍及用法
  • Atlas Mapper 教程系列 (6/10):Spring Boot 集成与自动配置
  • 挂马网站现象基于PHP网站开发的管理系统设计与开发
  • DSP28335开发中的Flash与RAM模式切换详解