写正确函数需要注意的地方:两个有序链表的合并
2012-08-19 16:45
344 查看
Node* merge(Node* p1, Node* p2) { //检验输入参数。 if(p1==NULL) return p2; else if(p2==NULL) return p1; Node* head; Node* p; if (p1->value>p2->value) {//使得p1的第一个元素大于p2的。 p=p1; p1=p2; p2=p; } head=p=p1;//存储头结点。 for (p1=p1->pNext; p1!=NULL && p2!=NULL; ) {//添加较小的元素 if (p1->value>p2->value) { p->pNext=p2; p=p->pNext; p2=p2->pNext; } else { p->pNext=p1; p=p->pNext; p1=p1->pNext; } } //将剩下的元素直接置于合并的链表后面。 if (p1==NULL) { p->pNext=p2; } else p->pNext=p1; return head; }
1. 检验输入参数。
2. 头指针首先存储下来。
3. 循环结束后,将p1或者p2中的元素直接置于链表后面。
相关文章推荐
- 写正确函数需要注意的地方:两个非降序链表的并集,1>2>3和2>3>5合并为1>2>3>5。
- 写正确函数需要注意的地方:链表的合并排序
- 写正确函数需要注意的地方:链表的及时终止冒泡排序
- 写正确函数需要注意的地方:输入两个整数n和m,从数列1,2,3,...n中随意取几个数,使其和为m,列出所有可能组合
- 写正确函数需要注意的地方:两个序列a,b,大小都为n,序列元素的值为任意整数,无序;要求通过交换a,b中的元素,使序列a元素的和与序列b元素的和之间的差最小
- 写正确函数需要注意的地方:链表的逆转,递归与非递归
- 写正确函数需要注意的地方:int转char*, char* 转int。
- 给你两个有序链表,编写一个函数,把两个链表合并成一个新的有序链表,返回头指针
- 把两个有序链表合并为一个有序链表(注意空指针异常!)
- 写正确函数需要注意的地方:快速排序
- 写正确函数需要注意的地方:最长递减子序列
- 合并两个有序链表(Merged Two Sorted Lists)需要回顾
- 写正确函数需要注意的地方:strstr
- 写正确函数需要注意的地方:快速返回斐波那契数的第n项
- 写正确函数需要注意的地方:子数组的最大和
- 写正确函数需要注意的地方:最大堆的创建与堆排序
- 写正确函数需要注意的地方:给定一个十进制整数N,计算从1开始到N的所有整数出现的“1”的个数
- 写正确函数需要注意的地方:二叉树非递归中序遍历
- 写正确函数需要注意的地方:二分查找
- 写正确函数需要注意的地方:在字符串中找出连续最长的数字串,并把这个串的长度返回