- 浏览: 72717 次
- 性别:
- 来自: 北京
typedef int Item; typedef struct node { Item item; struct node *next; }Node,*List; void merge1(List la, List lb, List *lc) { Node *pa,*pb,*pc; pa=la->next; pb=lb->next; pc=(*lc)=la; while(pa && pb){ if(pa->item <= pb->item){ pc->next=pa; pc=pa; pa=pa->next; }else{ pc->next=pb; pc=pb; pb=pb->next; } } pc->next=pa?pa:pb; free(lb); } /*two non-headnode list merge*/ List __merge(List la, List lb) { List lc; if(la==NULL) return lb; if(lb==NULL) return la; if(la->item <= lb->item){ lc=la; lc->next=__merge(la->next,lb); }else{ lc=lb; lc->next=__merge(la,lb->next); } return lc; } List merge2(List la, List lb) { if(la->next==NULL){ free(la); return lb; } if(lb->next==NULL){ free(lb); return la; } List lc=malloc(sizeof(Node)); lc->next=__merge(la->next,lb->next); free(la); free(lb); return lc; }
发表评论
-
排序算法---计数排序
2011-11-27 14:57 557#include <stdio.h> vo ... -
排序算法---归并排序
2011-11-26 19:33 697#include <stdio.h> vo ... -
排序算法---交换排序(冒泡排序、快速排序)
2011-11-26 19:32 665#include <stdio.h> vo ... -
排序算法---选择排序(简单插入排序、堆排序)
2011-11-26 19:31 599#include <stdio.h> vo ... -
排序算法---插入排序(简单排序、shell排序)
2011-11-26 19:29 601#include <stdio.h> vo ... -
删除字符串中的特定字符和重复字符
2011-11-26 13:45 630#include <stdio.h> vo ... -
Linux编程-多线程、同步和互斥(转载)
2011-11-14 15:27 1152http://www.cnblogs.com/skynet/a ... -
寻找字符串中的最大数字子串
2011-09-22 17:17 1471#include <stdio.h> int f ... -
删除子字符串
2011-09-21 15:27 563#include <stdio.h> #incl ... -
c语言随机数
2011-09-18 17:15 655#include <stdio.h> #i ... -
链表逆序的递归/非递归算法
2011-09-01 23:37 1357/** *链表逆序的递归/非递归算法 */ # ... -
递归算法---字符串---全/部分组合和全排列
2011-08-30 23:01 1174#include <stdio.h> #i ... -
递归算法---0-1背包问题(面试宝典)
2011-08-28 21:11 1853/** *正整数n,m,从数列1、2、3、...、n中随 ... -
递归算法---字符串全组合(面试宝典)
2011-08-28 17:24 1210/** *求一字符串所有字串的组合 */ #i ... -
递归算法---求解多元一次方程
2011-08-28 10:38 1861/** * 求解x1+x2+x3+...+x10 = ... -
(zz)关于类的sizeof
2011-08-27 18:16 525http://blog.sina.com.cn/s/blog_ ... -
(zz)结构体字节对齐原则
2011-08-27 17:53 1549结构体默认的字节对齐一般满足三个准则: 结构体变量的首 ... -
list.h from linux-2.4
2011-08-25 09:59 570#ifndef _LIST_H_ #define _L ... -
The C Programming Lang (K&R) hash table
2011-08-25 09:52 900hash.h #include <stdio.h ... -
Josephus环
2011-08-23 11:20 661/*************************** ...
相关推荐
设ha和hb分别是指向两个带头结点的非递减(递增)有序单链表的头指针。要求设计一个算法,将这两个有序链表合并成一个非递增(递减)有序的单链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其它存储...
设ha和hb分别是两个带头结点的非递减有序单链表的表头指针,试设计一个算法,将这两个有序链表合并成一个非递减有序的单链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复...
本题要求实现一个函数,将两个...L1和L2是给定的带头结点的单链表,其结点存储的数据是递增有序的;函数Merge要将L1和L2合并为一个非递减的整数序列。应直接使用原序列中的结点,返回归并后的带头结点的链表头指针。
2、掌握单链表的插入、删除、查找、求表长以及有序单链表的合并算法的实现 二、实现内容 1、单链表基本操作的实现 在带头结点的单链表h中第i个数据元素之前插入一个数据元素x ,首先需要在单链表中寻找到第i-1个结点...
利用算法5建立两个非递减有序单向链表,然后合并成一个非递减链表。 (7).利用算法1建立的链表,删除链表中的重复元素。 (8).利用算法1建立的链表,实现将其分解成两个链表,其中一个全部为奇数,另一个全部为偶数...
1.随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 2.遍历单向链表。 3.把单向链表中元素逆置(不允许申请新的结点空间)。 4.在单向链表中删除所有的偶数元素结点。 5.编写在非递减...
参考实验指导书“实验题 5:删除有序单链表中所有大于 mink 且小于 maxk的元素”。 选题7:(中等)删除单链表中多余元素。 完成习题集中的算法并编程实现:2.20。参考课件“chap002线性表习题讲解.ppt”2.20。 已知...
(一)单链表的定义及基本操作 (1)用带表头的链表存放输入的数据,每读入一个数,按升序顺序插入到链表中,链表中允许两个结点有相同...请写出并在计算机上实现将这两个链表合并为一个带头结点的有序循环链表的算法。
合并两个链表:设A与B分别为两个带有头结点的有序循环链表(所谓有序是指链接点按数据域值大小链接,本题不妨设按数据域值从小到大排列),list1和list2...请写出将这两个链表合并为一个带头结点的有序循环链表的算法。
设有两个带头结点的有序单循环链表A、B,将其合并为一个带头结点的新的有序单循环链表C, 原来的有序单循环链表A、B仍然保持不变。 实现要求: ⑴ 建立有序单循环链表模块,数据从键盘输入且是任意顺序,进行排序使...
(2)将两个循环单链表合并为一个循环单链表,其头指针为LA。 六)单链表应用 建立一个带头结点的线性链表,用以存放输入的二进制数,链表中每个结点的data域存放一个二进制位,并在此链表上实现对二进制数加1的运算...
写一算法,将带头结点的有序单链表A和B合并成一新的有序表C。 (注:不破坏A和B的原有结构) 答:Merge(Linklist A, Linklist B, Linklist &C ) void Merge(Linklist A, Linklist B, Linklist &C) { C=(Linklist)...
构造两个带有表头结点的有序单链表La、Lb,编写程序实现将La、Lb合并成一个有序单链表Lc。 合并思想是:程序需要3个指针:pa、pb、pc,其中pa,pb分别指向La表与Lb表中当前待比较插入的结点,pc 指向Lc表中当前最后...
有序表 D. 单链表 二、判断题 1. 数据元素是数据的最小单位。( ) 【北京邮电大学 1998 一、1(2分)】【青岛大学 2000 一、1 (1分)】 【上海交通大学 1998 一、1】 【山东师范大学 2001 一、1 (2分)】 2. ...
2.(8分)设在一个带头结点的双向链表中,所有结点的数据元素按值递增顺序排列,写一算法,删除表中所有大于min,小于max的元素(若存在)。双链表的定义如下: typedef struct DLnode{ int data; DLnode *pre, *...
1、随机产生或键盘输入一组元素,建立一个带头结点的单向链表(无序)。 2、遍历单向链表(显示)。 3、把单向链表中元素逆置(不允许申请新的结点空间)。 4、在单向链表中删除所有的偶数元素(值为偶数)结点。 5...