单链表合并操作
来源:互联网 发布:蓝色滤镜软件 编辑:程序博客网 时间:2024/06/02 10:17
1.无序
list prio(list a,list b)
{
int m=0,n=0;
node*p=a.first;
node*q=b.first;
while(p)
{
m++;
p=p->next;
}
while(q)
{
n++;
q=q->next;
}
if(m>=n)
{
p=a.first;
q=b.first;
while(q)
{
node*p1=p->next;
node*q1=q->next;
p->next=q;
q->next=p1;
p=p1;
q=q1;
}
}
else
{
q=a.first;
p=b.first;
while(q)
{
node*p1=p->next;
node*q1=q->next;
p->next=q;
q->next=p1;
p=p1;
q=q1;
}
a.first=b.first;
}
return a;
}
2.有序
void MergeList_L(LinkList La,LinkList Lb,LinkList &Lc,Status(*compare)(ElemType,ElemType))
{
//已知单链现形表La和Lb中的数据元素按值非递减排列
//归并La和Lb得到的新的线形表Lc,Lc的数据元素也按值非递减排列
LNode *pa,*pb,*pc;
pa=La->next;
pb=Lb->next;
//Lc=pc=La;//用La的头结点作为Lc的头结点
InitList_L( Lc ); //creat the header for Lc.
pc = Lc;
while(pa&&pb)
{
pc->next = ( LNode* )malloc( sizeof( LNode ) );
if((*compare)(pa->data,pb->data))
{
memcpy( pc->next, pa, sizeof( LNode ) );
pc=pc->next;pa=pa->next;
}
else
{
memcpy( pc->next, pb, sizeof( LNode ) );
pc=pc->next;pb=pb->next;
}
}
pc->next=pa?pa:pb;//插入剩余段
}
- 单链表合并操作
- /*循环单链表合并操作
- 单链表合并操作
- 单链表操作:逆序、合并
- 单链表合并操作
- 单链表的高级操作--合并
- 单链表操作之合并两个单链表
- 表操作-合并列
- 合并链表操作
- svn进行合并操作
- 宏:##-合并操作符
- Java 文件合并操作
- neon 合并操作
- Table 行合并操作
- 空合并操作符
- git合并冲突操作
- MATLAB矩阵合并操作
- ES合并操作小结
- C++程序:求多个同学的平均成绩然后求低于它的,打印出来(不知道同学的个数的)
- 再放下
- 系统自动弹出IE保护黑白名单的解决
- size_t类型
- 单链表插入排序
- 单链表合并操作
- 读取长SQL语句
- 通讯录
- "深蓝"背后的"疯狂"英雄
- 别人的一些项目经验
- 光驱不读盘你会怎么做
- 开博
- 一些正值表达式
- java 泛型?基本使用