摘要: 题目:输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字。例如:如果输入如下矩阵:1 2 3 45 6 7 89 10 11 1213 14 15 16则依次打印出数字1, 2, 3, 4, 8, 12, 16, 15, 14, 13, 9, 5, 6, 7, 11, 10。思路:1.首先... 阅读全文
posted @ 2015-06-09 21:05 runninglzw 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 思路:采用递归的思想。对于根节点,若其左子树或右子树不为空(为空返回),则互换左、右子树,然后对于左、右子树,分别递归上述处理方法,直至叶节点。实现代码如下:#includeusing namespace std;struct treenode{ char data; treenode ... 阅读全文
posted @ 2015-05-30 18:31 runninglzw 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两棵二叉树A和B,判断B是不是A的子结构。思路:首先判断A树的头结点是否等于B的头结点:如果相等的话则继续递归判断这两个子节点是否都相同,如果指向B的指针为NULL则返回true,其他情况都返回false(A为NULL,A->data!=B->data)如果不等的话则继续递归它的左右子树直... 阅读全文
posted @ 2015-05-28 21:26 runninglzw 阅读(348) 评论(0) 推荐(0) 编辑
摘要: 题目:已知两个链表head1和head2各自有序,请把它们合并成一个链表依然有序。(保留所有结点,即便大小相同)循环实现:1.重新申请一个头结点,使用指针p指向他,每新加一个结点,就将指针p后移一位,即指针p永远指向新链表的尾结点2.由于所用链表第一个结点不赋值,因此指针需要开始从头结点的下一个结点... 阅读全文
posted @ 2015-05-27 22:25 runninglzw 阅读(8139) 评论(0) 推荐(0) 编辑
摘要: 题目:定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点。思路:假设有链表A->B->C->D->E->F->G。在反转链表过程中的某一阶段,其链表指针指向为:AF->G。也就是说在结点D之前的所有结点都已经反转,而结点D后面的结点E开始的所有结点都没有反转。这样D跟E之间存在了... 阅读全文
posted @ 2015-05-26 11:54 runninglzw 阅读(203) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个单向链表,输出该链表中倒数第k个结点。最后一个结点为倒数第一个结点。思路:1.首先遍历链表的长度获得链表的length,则它的倒数第k个结点就是正数length-k+1个结点,但这需要遍历链表两次2.使用两个指针可以实现遍历一次,first指针指向头结点,second指针指向first... 阅读全文
posted @ 2015-05-25 15:23 runninglzw 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分思路:声明两个指针,一个指向该数组的头,另一个指向该数组的尾,将头指针指向的第一个偶数和尾指针指向的第一个奇数交换即可,直到头指针大于尾指针跳出循环。代码如下:void t... 阅读全文
posted @ 2015-05-22 15:48 runninglzw 阅读(566) 评论(0) 推荐(0) 编辑
摘要: 题目:给定单向链表的头指针和一个结点指针,定义一个函数在O(1)时间删除该结点。思路:要删除一个结点,常规的办法就是让他的前面一个结点的next值指向他的下一个结点,但是要获得它的前一个结点时间复杂度为O(n);可以转换一下思维,先将它的下一个结点的值赋给要删除的结点,然后删除它的下一个结点就行了;... 阅读全文
posted @ 2015-05-20 21:07 runninglzw 阅读(170) 评论(0) 推荐(0) 编辑
摘要: 上一篇博客是用循环实现的,代码比较繁琐,下面用递归实现:具体思路:由于n位数每一位都是由0到9组成的,所以通过全排列可以实现打印所有的数,printnumber函数:判断递归是否到达最后一位,是则说明最后一位已经被赋值,打印number即可,否则继续递归赋值给下一位(从0到9开始)具体代码如下://... 阅读全文
posted @ 2015-05-17 15:03 runninglzw 阅读(2009) 评论(0) 推荐(0) 编辑
摘要: 题目:输入数字n,按顺序打印出1到最大的n位十进制数。比如输入3,则打印出1、2、3一直到最大的3位数即999。在不考虑大数的情况下,直接循环打印直到最大的数。在考虑大数的情况下:1.开辟n+1个空间的char型数组来保存数字,最后一位赋值为‘\0’,并且数字最高位对应数组的0下标;2.构建函数bo... 阅读全文
posted @ 2015-05-15 19:57 runninglzw 阅读(326) 评论(0) 推荐(0) 编辑