几个感觉不错的简单算法
void merge1(LinkList *La,LinkList *Lb,LinkList *Lc);//将俩有序链表合并成有序链表
void merge2(LinkList *La,LinkList *Lb,LinkList *Lc);//将两个非递减的链表合并成一个非递增的链表
void Dif(LinkList *La,LinkList Lb,LinkList Lc);//删除有序链表A中B,C共有的元素
//union two sorted linklist
void merge1(LinkList *La,LinkList *Lb,LinkList *Lc)
{
Lnode *p=(*La)->next,*q=(*Lb)->next,*r;
*Lc=r=*La;//r和*lc同时指向**la
while(p&&q)
{
if(p->data<=q->data)
{
r->next=p;//将下一节点指向la的当前节点
r=p;//将r移向当前节点
p=p->next;//指针后移
}
else
{
r->next=q;
r=q;
q=q->next;
}
}
r->next=p?p:q;
//
free(q);
//书上写有这句,加上它之后再vc过不了,感觉也没什么意义。
}
void merge2(LinkList *La,LinkList *Lb,LinkList *Lc)
{
Lnode *p=(*La)->next,*q=(*Lb)->next,*r;
while(p||q)
{
if(p==NULL)
{
r=q;q=q->next;
}
else if(!q)
{
r=p;p=p->next;
}
else if(p->data<=q->data)
{
r=p;p=p->next;
}
else
{
r=q;q=q->next;
}
r->next=(*Lc)->next;//insert at front
(*Lc)->next=r;
}
//delete La;delete Lb;
}
void Dif(LinkList *La,LinkList Lb,LinkList Lc)
{
Lnode *pa=(*La)->next,*pb=Lb->next,*pc=Lc->next,*r,*pre;//when you want to delete a node you need know the last node's point
pre=*La;//pre point to the head node at begining
while(pa&&pb&&pc)
{
if(pa->data<pb->data)
{
pre=pa;pa=pa->next;
printf("hahha");
}
else if(pb->data<pc->data) pb=pb->next;
else if(pc->data<pa->data) pc=pc->next;
else{
pre->next=pa->next;
//delete pa;
pa=pa->next;
}
}
}
分享到:
相关推荐
链表类 实现对不同数据的链表操作 数据可以是数 还可以是对象 结构体等等 排序插入可以继承类后加个重载比较运算符进行操作
C语言链表的应用,包括建立链表、删除链表、插入/删除元素操作
链表操作程序(完整)C语言.txt链表操作程序(完整)C语言.txt
链表很多同学不太理解,对此写了下链表的基本操作,头插法,对应位置修改删除等基本功能,仅提供自己学习。
数据结构 作业 链表的操作 完美链表 包括链表的 构造 数值的插入 删除 几种排序。。。。
复习一下大二的数据结构,为leetcode做准备。
双链表的常用操作 包括双链表的建立 双链表的打印 双链表的插入 双链表的删除节点
单向链表所有操作的c语言实现,代码经过在Linux下测试。在Windows下应该也没问题
用模板实现链表的建立删除等操作,可以根据具体情况稍作修改即可实现链表操作,或直接使用,我在链表的学习和类模板的学习和以后的编程时这种链表构造思想觉得挺好的,有点面向对象的意思……粗浅的理解呵呵!
写更多的代码,用更多的指针, 用更多的指针,写更多的代码, C语言编程,我还是要用链表。
使用的Java语言和JavaFX库编写的链表操作演示程序源码,对于链表的几个基本操作都具有演示动画,且数据可数据产生,也可以随机产生
用C++实现双向链表的插入,删除,更新等操作。
数据结构线性链表操作 链表结点的增添 删除
双向链表的操作问题 Time Limit: 1000MS Memory Limit: 10000KB Submissions: 111 Accepted: 41 Description 建立一个长度为n的带头结点的双向链表,使得该链表中的数据元素递增有序排列。(必须使用双向链表完成...
封装了链表的操作,功能有链表的创建,节点的添加(附加),插入(前插、后插和插入到链表头部),删除,得到节点数据,得到节点位置,得到节点总数,释放链表。 使用了类模版,使得可以让节点中的数据为任意类型,...
链表的操作,链表的加入、删除、合并操作
c 语言 链表基本操作,创建 查找 删除 插入 双向链表源码
集合了对C#单向链表的实现。让大家熟悉对C#操作
链表的操作1 链表的操作1 链表的操作1链表的操作1链表的操作1链表的操作1链表的操作1