使用DFS算法递归地遍历一个无环有向图,并在退出递归时输出相应顶点,这样得到的顶点序列是()。
A.逆拓扑有序
B.拓扑有序
C.无序的
D.都不是
求自然数1到n的和的递归定义如下: sum(1)=1 若n=1 sum(n)=sum(n-1)+n; 若n>1 下列定义的方法的功能是用递归的算法完成自然数1到n的累加和,请补充程序。 int sum (int num{ if(num = =1)return1; else return【 】 }
将一个非负十进制整数转换成八进制数,使用非递归算法实现。
算法分析:十进制转换成八进制的过程是将十进制整数除8得余数,直到商是0为止,然后倒排余数。为了得到倒排的余数,可以利用栈来实现,每次运算后将余数压入栈中,直到商为0,将栈中数据输出即是。使用顺序栈,将顺序栈的定义及其基本操作的实现写在头文件“seqstack.h”中。
二叉树
实验目的:
(1)熟悉二叉树的各种存储结构及适用范围。
(2)掌握建立二叉树的存储结构的方法。
(3)熟练掌握二叉树的先序、中序、后序遍历的递归算法和非递归算法。
(4)灵活运用递归的遍历算法实现二叉树的其他各种运算。
(5)掌握和理解本实验中出现的一些基本的C语言语句。
(6)体会算法在程序设计中的重要性。
实验内容:
(1)以二叉链表作存储结构,设计求二叉树高度的算法。
(2)以二叉链表作存储结构,编写递归的中序遍历算法。
(3)以二叉链表作存储结构,编写非递归的中序遍历算法。
(4)以二叉链表作存储结构,编写求二叉树中叶子结点的个数算法。
问题描述:给定一个自然数n,由n开始可以依次产生半数集set(n)中的数如下:
(1)n∈set(n);
(2)在n的左边加上一个自然数,但该自然数不能超过最近添加的数的一半:
(3)按此规则进行处理,直到不能再添加自然数为止.
例如,set(6)={6,16,26,126,36,136}.半数集set(6)中有6个元素.注意,该半数集不是多重集.集合中已经有的元素不再添加到集合中.
算法设计:对于给定的自然数n,计算半数集set(n)中的元素个数.
数据输入:输入数据由文件名为input.txt的文本文件提供.每个文件只有一行,给出整数n(0<n<1000).
结果输出:将计算结果输出到文件output.txt.输出文件只有一行,给出半数集set(n)中的元素个数.
一年定期储蓄客户表 | ||
账号 | 姓名 | 金额 |
23001 | 李明 | 5000 |
23008 | 贾燕 | 6000 |
23190 | 王昭 | 2100 |
23451 | 谢永丰 | 4500 |
查找
实验目的:
(1)掌握顺序查找、二分查找的递归及非递归算法。
(2)掌握散列表上的各种操作。
(3)熟练掌握在二叉排序树上各种操作的实现方法。
(4)掌握和理解本实验中出现的一些基本的C语言语句。
(5)体会算法在程序设计中的重要性。
实验内容:
(1)给出顺序表上顺序查找元素的算法。
(2)给出非递归的二分查找算法。
(3)编写拉链法处理冲突的查找程序。
算法实现的思路为:n个人用1,2,…,n进行编号,使用不带头结点的单链表来存储,报数从1号开始,若某个人出圈,则将其打印输出,并将该结点删除,再对剩余的n-1个人重复同样的过程,直到链表中只剩下一个结点,将其输出即可。算法的具体实现如下: