数据结构与算法
零基础学习!
蚂蚁追风筝
菜鸟一枚。
展开
-
二叉树的创建和文本显示
对于每组数据,显示对应的二叉树,然后再输出一空行。输出形式相当于常规树形左旋90度。注意二叉树的每一层缩进为4,每一行行尾没有空格符号。编一个程序,读入先序遍历字符串,根据此字符串建立一棵二叉树(以指针方式存储)。每组数据包含一行字符串,即二叉树的先序遍历,字符串长度大于0且不超过100。各结点数据(长度不超过3),用空格分开,其中“#”代表空树。建立起此二叉树以后,再按要求输出二叉树。输入由多组测试数据组成。原创 2022-10-15 14:09:26 · 395 阅读 · 0 评论 -
中缀表达式转后缀表达式
输入一个中缀表达式,编程输出其后缀表达式,要求输出的后缀表达式的运算次序与输入的中缀表达式的运算次序相一致。为简单起见,假设输入的中缀表达式由+(加)、-(减)、×(乘)、/(除)四个运算符号以及左右圆括号和英文字母组成,其中算术运算符遵守先乘除后加减的运算规则。假设输入的中缀表达式长度不超过300个字符,且都是正确的,即没有语法错误,并且凡出现括号其内部一定有表达式,即内部至少有一个运算符号。4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,括号不输出。只有一行,为中缀表达式。原创 2022-10-15 14:08:52 · 769 阅读 · 0 评论 -
后缀表达式求值
后缀表达式的处理过程如下:扫描后缀表达式,凡遇操作数则将之压进堆栈,遇运算符则从堆栈中弹出两个操作数进行该运算,将运算结果压栈,然后继续扫描,直到后缀表达式被扫描完毕为止,此时栈底元素即为该后缀表达式的值。为了便于处理表达式,常常将普通表达式(称为中缀表示)转换为后缀{运算符在后,如X/Y写为XY/表达式。在这样的表示中可以不用括号即可确定求值的顺序,如:(P+Q)输入一行表示后缀表达式,数与数之间一定有空格隔开(可能不只一个空格),最后输入@表示输入结束。输出一个整数,表示该表达式的值.原创 2022-10-15 14:08:16 · 412 阅读 · 0 评论 -
单词检查(Ⅰ)- 顺序表实现
如果单词是错误的,那么接着输出’:‘,如果字典中有建议修改单词,则按照字典中出现的先后次序输出所有的建议修改单词(每个前面都添加一个空格),如果无建议修改单词,在’:'后直接换行。单词检查是根据字典,找出输入文本中拼错的单词,我们认为凡是不出现在字典中的单词都是错误单词。所有的单词都是不同的,字典中最多10000个单词。你写的程序要求读入字典文件,然后对一个输入文件的单词进行检查,列出其中的错误单词并给出修改建议。字典中的单词和待检测的单词均由小写字母组成,并且单词最大长度为15。本题要求使用顺序表实现。原创 2022-10-13 20:53:44 · 542 阅读 · 0 评论 -
带权路径长度
第一行仅一个整数n(2原创 2022-10-13 20:52:17 · 430 阅读 · 0 评论 -
真值表(Ⅱ)
对于每一个逻辑表达式,输出其对应的真值表即可。相对于任务一,输出的最右边增加了一列,包含了表达式和它的各个值。第二阶段的任务是给定一个逻辑表达式,生成真值表。原创 2022-10-13 20:51:39 · 5817 阅读 · 3 评论 -
真值表(Ⅰ)
同学们都学习过《离散数学》这门课程,知道真值表是用于逻辑中的一类数学用表,用来计算逻辑表示式在每一个逻辑变量取值组合下的值。提示一下,数据结构教材中介绍了数学表达式的处理算法,可以将其改造以适用于我们的项目。一个正确的逻辑表达式可以包含小写字母,空格和逻辑联结词(含括号)。单个小写字母表示一个逻辑变量,一个表达式中逻辑变量的个数不超过10。项目分为三个子项目,第一部分为词法分析,即将逻辑表达式分隔为多个词(token)。第二行按字母序输出表达式中的所有逻辑变量,用空格分开。原创 2022-10-13 20:50:20 · 4237 阅读 · 3 评论 -
Josephus问题(Ⅲ)
n个人排成一圈,按顺时针方向依次编号1,2,3…从编号为1的人开始顺时针"一二三…"报数,报到m的人退出圈子。这样不断循环下去,圈子里的人将不断减少。最终一定会剩下一个人。试问最后剩下的人的编号。每组数据一行,每行两个正整数,代表人数n (1原创 2022-10-13 20:49:30 · 947 阅读 · 0 评论 -
Josephus问题(Ⅱ)
n个人排成一圈,按顺时针方向依次编号1,2,3…从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。最终一定会剩下一个人。试问最后剩下的人的编号。每组数据一行,每行一个正整数,代表人数n。(1原创 2022-10-13 20:48:08 · 236 阅读 · 0 评论 -
Josephus问题(Ⅰ)
n个人排成一圈,按顺时针方向依次编号1,2,3…从编号为1的人开始顺时针"一二"报数,报到2的人退出圈子。这样不断循环下去,圈子里的人将不断减少。最终一定会剩下一个人。试问最后剩下的人的编号。每组数据一行,每行一个正整数,代表人数n。(1原创 2022-10-13 20:46:08 · 187 阅读 · 0 评论 -
复杂度分析(Ⅱ)
对每一行输入,输出对应的一行,包括空格分开的两个整数,分别代表printf语句的执行次数以及代码执行完以后i+j+k的值, 如果值不确定,输出"RANDOM"取代值的位置。问printf语句共执行了几次?这段代码执行完以后i+j+k值为多少?由多行组成,每行一个整数n, 1原创 2022-10-13 20:39:11 · 493 阅读 · 0 评论 -
复杂度分析(Ⅰ)
对每一行输入,输出对应的一行,包括空格分开的两个整数,分别代表printf语句的执行次数以及代码执行完以后i+j+k的值, 如果值不确定,输出"RANDOM"取代值的位置。问printf语句共执行了几次?这段代码执行完以后i+j+k值为多少?由多行组成,每行一个整数n, 1原创 2022-10-13 20:36:42 · 1095 阅读 · 0 评论