摘要: 找出两个单链表里交叉的第一个元素解法:分别遍历list1、list2,计算得到L1,L2;比较最后结点是否相等,相等则表明是两个链表是交叉的如果交叉:长的链表先移动|L1-L2|步,再逐个比较,等到第一个交点! 阅读全文
posted @ 2012-09-18 11:24 logzh 阅读(1073) 评论(0) 推荐(0) 编辑
摘要: 链表相邻元素翻转,如a->b->c->d->e->f-g,翻转后变为:b->a->d->c->f->e->gLNode* ReverseLinkList3(LNode* head){ if(head == NULL) return head; LNode* p; LNode* temp; LNode* trail=head; while(trail->next !=NULL && trail->next->next != NULL) { //防止无限循环,在测试是设置一个循环标记位! p=tra 阅读全文
posted @ 2012-09-18 10:51 logzh 阅读(620) 评论(0) 推荐(0) 编辑
摘要: 解法三:考虑数组的第一个元素A[0],以及最大的一段数组(A[i]...A[j])跟A[0]的关系,有一下三种情况:1、0=i=j 元素A[0]本身构成和最大一段;2、0=i<j 和最大一段从A[0]开始3、0<i 和最大一段和A[0]没有关系所以假设:已经知道(A[1]...An-1])的最大和段之和为all[1];(A[1]...An-1])的包含A[1]的最大和段之和为start[1];那么all[0]=max{A[0], A[0]+start[1], all[1]};而start[0]=max{A[0], A[0]+start[1]};所以all[0]=max{star.. 阅读全文
posted @ 2012-09-18 10:15 logzh 阅读(205) 评论(0) 推荐(0) 编辑
摘要: 删除字符串开始及末尾的空白符,并且把数组中间的多个空格(如果有)符转化为1个 1 string test(string s) 2 { 3 string ns; 4 int flag=0; 5 int count=0; 6 for(int i=0; i<s.length(); i++) 7 { 8 if(flag==0 && s[i]==' ')//删除字符串首空格 9 {10 continue;11 }12 13 if(s[i] != ' ')//不是空格14 ... 阅读全文
posted @ 2012-09-18 09:36 logzh 阅读(1072) 评论(0) 推荐(0) 编辑