4、已知head是带头结点的单链表的头指针,编写递归算法的程序,实现逆序输出表中个元素的值。假设,结点中的数据为整数。
5、已知非空线性链表head,编写程序,将链表中数据域值最小的那个结点移至表的最前面。要求:不得额外申请新的结点。
6、已知一个带头结点的单链表head,假设结点中的元素为整数,编写程序,按递增次序输出单链表中各结点的数据元素,并释放结点所占的存储空间。
7、已知head为无头结点单链表的头指针,假设链表中存储的都是整型数据,编写含递归算法的程序实现下面的问题:
a、求单链表中的最大整数
b、求单链表中结点个数
c、求所有证书的平均值
8、设有两个栈S1,S2都采用顺序栈方式,并且共享一个存储区[0……MAXSIZE-1],为了尽量利用空间,减少溢出的可能,可采用栈顶相向、迎面增长的存储方式,编写程序实现S1,S2有关入栈和出栈的操作。
9、无穷数列{1,1,2,3,5,8,13,21,……},编写程序实现该数列第N个元素的递归和非递归程序。
10、求两个正整数m和n的最大公约数可以用如下gcd(m,n)表示:
m,n=0
gcd(m,n)=
gcd(n,m%n),n>0
a、 编写一个计算gcd(m,n)的递归过程。
b、 将上述过程转化成非递归的过程。
c、 画出计算gcd(28,36)的过程及栈的状态变化,给出计算结果。
11、假设表达式由单字母变量和双目四则运算算符构成。编写程序,将一个书写正确的表达式(中序表达式)转换成逆波兰表达式(后序表达式)。
12、编写计算链队列Q中结点的个数。