删除两个双向链表中重复元素
来源:互联网 发布:对电影台词软件 编辑:程序博客网 时间:2024/05/16 02:23
#include <iostream>using namespace std;//删除两个链表中的重复数据typedef struct node{ int data; struct node *front, *next;}Node;void output(Node *head){ Node *p = head; while(p->next != head) { p = p->next; cout << p->data << " "; } cout << endl;}//构造一个双链表Node* createLink(int* a, int len){ Node *pHeadA = new Node; Node *p; pHeadA->data = 0xffffffff; pHeadA->next = pHeadA; pHeadA->front = pHeadA; p = pHeadA; for(int i = 0; i < len; ++i) { Node *p1 = new Node; p1->data = a[i]; p->next = p1; p1->front = p; pHeadA->front = p1; p1->next = pHeadA; p = p1; } return pHeadA;}//删除指定的结点Node* removeNode(Node* p){ Node *pPrevious = p->front; Node *pNext = p->next; pPrevious->next = pNext; pNext->front = pPrevious; delete p; return pPrevious;}//找到要删除的结点bool findRemoveNode(Node* head, int data){ Node *p = head; bool flag = false; while(p->next != head) { p = p->next; if(p->data == data) { p = removeNode(p); flag = true; } } return flag;}//删除重复结点void DeleteSameNodes(Node* pHeadA, node* pHeadB){ Node *pA = pHeadA; Node *pAPre; while(pA->next != pHeadA) { pAPre = pA; pA = pA->next; int Adata = pA->data; int flag = findRemoveNode(pHeadB, Adata); if(flag) { //在B中重复的结点,那么A中的结点也要都删去 findRemoveNode(pHeadA, Adata);//注意会引起A中pA失效 pA = pAPre;//重定位指针 } }}int main(){ cout << "删除前:"<<endl; //创建A链表 int a[6] = {1,2,3,2,4,3}; Node* pHeadA = createLink(a, 6); cout << "A链表中的元素为:"; output(pHeadA); //创建B链表 int b[4] = {0,2,4,2}; Node* pHeadB = createLink(b, 4); cout << "B链表中的元素为:"; output(pHeadB); //删除两个链表中重复的值,题意不是很清楚,这里理解为若B中与A有相同的元素data, //则A与B中所有含data的结点都要删去,而若B中没有相同的data,那么即使A内部有多 //个data,也不删除。 cout <<endl<< "删除后:"<< endl; DeleteSameNodes(pHeadA, pHeadB); cout << "A链表中的元素为:"; output(pHeadA); cout << "B链表中的元素为:"; output(pHeadB); return 0;}
0 0
- 删除两个双向链表中重复元素
- “删除重复元素”:保留两个
- 删除两个双向链表中相同元素的所有节点
- 两个双向链表删除相同元素
- 删除链表中重复元素
- 删除链表中重复元素
- 删除链表中重复元素
- 删除链表中重复元素
- 删除链表中重复元素
- STL双向链表之删除重复元素(list)
- 删除链表中重复的元素
- 删除排序链表中重复元素
- 删除链表中相邻重复元素
- 删除链表中重复的元素
- 删除链表中重复的元素
- 删除链表中重复的元素
- 删除链表中重复的元素
- 在双向链表中删除指定元素
- uva 303 - Pipe(几何)
- 优先队列的详解与应用
- 可重入函数与线程安全函数
- virtualbox中ubuntu和windows共享文件夹设置
- ObjC第四节:继承
- 删除两个双向链表中重复元素
- iOS应用架构谈 网络层设计方案
- mac book air 安装win10
- 最短摘要生成
- machine Algorithm总结
- uva 313 - Intervals(几何)
- Maven2的配置文件settings.xml解析
- 美素数(hdu 4548)打表
- JMS基础知识