9.已知两个链表A和B分别表示两个集合,其元素递增排列,设计一个算法,求A和B的交集,并存放于A链表中(A中只有A与B相同的部分)
创始人
2024-04-11 19:49:21
0

算法思想:设置两个指针依次遍历链表A和B,如果A中数据域元素元素小于B中的数据域元素,则释放A中的结点,指向A链表的指针后移,若B中的元素小则释放B中所指结点,如果A中还有剩余则依次释放A中剩余结点,如果B中还有剩余则依次释放B中剩余结点。

LinkList solA(LinkList &A,LikList &B){

LNode *p=B->next,*q=A->next;//定义两个结点分别指向A链表和B链表

A->next=NULL;//A置空

LNode *r=A,*u;//r指向A

while(q!=NUUL&P!=NUUL){

if(q->datadata)//如果q元素比较小

        u=q;//指向要删除的结点

        q=q->next;//q指针往后移

        free(u);//删除结点

else if(p->datadata)//如果p元素较小

        u=p;//指向要删除结点

        p=p->next;//p指针后移

        free(u);//删除结点

else(p->data==q->data)//如果此时比较元素相等

        p=r->next;//尾插法插入A链表中

        r=p;//r指向尾结点

        r->next=NUUL;//尾指针置空

}

while(p!=NUUL){//如果B中还有剩余依次删除剩余结点

u=p;

p=p->next;

free(u);

}

while(q!=NUUL){//如果A中有剩余依次删除剩余结点

u=q;

q=q->next;

free(u);

}

free(B);//释放B的头结点

return A;//返回链表A

}

相关内容

热门资讯

【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
修复 爱普生 EPSON L4... L4151 L4153 L4156 L4158 L4163 L4165 L4166 L4168 L4...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
ChatGPT 怎么用最新详细... ChatGPT 以其强大的信息整合和对话能力惊艳了全球,在自然语言处理上面表现出了惊人...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...