| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构链表4-5 -> 正文阅读 |
|
[数据结构与算法]数据结构链表4-5 |
4.已知一个单链表中的数据元素含有三类字符(即字母字符,数字字符和其它字符),试编写算法,构造三个循环链表,使每个循环链表中只含有同一类的字符,且利用原表中的结点空间作为这三个表的结点空间。 大概思路:只有字母,数字和其他字符,可以用char型存储单链表中的数据元素,最后根据ASCII码把元素分为字母,数字,其他三类。由于有三个类,循环链表,需要三个头指针,三个尾指针(尾指针可要可不要,此处是个人习惯),一个记录下一个结点地址的指针 难点:利用原表的结点空间作为三个表的结点空间 ASCII码:48~57表示0~9数字。10,11等两位数以上的数字ASCii码不能直接表示,不过由于该单链表是逐个字符存储的,所以不需要考虑检测两位数以上的数字和负数 65~90 表示A~Z,97~122表示a~z,0~127内的其他数字表示其他字符
没想到会这样报错: 这个文件我根本没创建过,莫名其妙地运行了? 难道是Xcode的缓存要清除?需要找到Library/Developer/Xcode/DerivedData,看来看去没有Library,被隐藏了,点开用户文件夹,选择显示‘资源库’文件夹,找到‘DerivedData’文件夹,文件夹内是模拟器运行每个APP生成的缓存文件,全都删了 没用,无奈重建了一个project 重建了一个project正常运行了一段时间,也出现了上述问题,瞎搞一通解决了,目前测试出来的原因是没有把测试用的cpp文件和头文件放在一个文件夹里 ?这样放置文件问题解决 其他没什么问题,析构函数要重写,调用divide_them_into_three()前后的析构函数是不一样的 重写的析构函数出了大问题(加一个判断条件,再套三次模板):
? 看来是释放了两次某空间 错因:忘了是个循环链表,析构函数判断条件不该是头结点为空 改成这样就好(以字母链表为例)
?总结:析构函数和构造函数随着链表链接方式而改变 大概思路:弄两个变量AB,A记最小值,不断和下一个结点的数据比,B记录A当前数据是第几个结点的数据,还要考虑删除头结点尾结点中间结点 出现了一个很有意思的问题:在类的public成员函数中,cur_num赋值失败,为什么?
?测试了一下,问题出在count,即使达到了count==num的条件,该循环也没有break,为什么? 输出语句改为
得到: 为什么count加了10? 再改一下循环,使count不进行任何运算,仅在循环前赋予初值0,得到: ? 说明赋值语句对count同样无效,why? 没想通,先睡觉? 酒醒了,是min的初始化语句有问题,要放在循环外,否则无论遍历几遍,min的值始终是头结点的值,所以不是不能给cur_num赋值,产生这种情况有两个原因:1??我测试的数据头结点即为最小,所以该循环不会进入if的判断语句中给cur_num赋值2??cur_num未初始化 正确的代码:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 19:17:44- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |