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

}

相关内容

热门资讯

监控摄像头接入GB28181平... 流程简介将监控摄像头的视频在网站和APP中直播,要解决的几个问题是:1&...
Windows10添加群晖磁盘... 在使用群晖NAS时,我们需要通过本地映射的方式把NAS映射成本地的一块磁盘使用。 通过...
protocol buffer... 目录 目录 什么是protocol buffer 1.protobuf 1.1安装  1.2使用...
在Word、WPS中插入AxM... 引言 我最近需要写一些文章,在排版时发现AxMath插入的公式竟然会导致行间距异常&#...
【PdgCntEditor】解... 一、问题背景 大部分的图书对应的PDF,目录中的页码并非PDF中直接索引的页码...
Fluent中创建监测点 1 概述某些仿真问题,需要创建监测点,用于获取空间定点的数据࿰...
educoder数据结构与算法...                                                   ...
MySQL下载和安装(Wind... 前言:刚换了一台电脑,里面所有东西都需要重新配置,习惯了所...
MFC文件操作  MFC提供了一个文件操作的基类CFile,这个类提供了一个没有缓存的二进制格式的磁盘...
有效的括号 一、题目 给定一个只包括 '(',')','{','}'...