从一个链表channelHead中删除和channelToDeleteHead中相同的元素
来源:互联网 发布:医疗数据公司 编辑:程序博客网 时间:2024/06/07 05:55
#include <iostream>using namespace std;//从一个链表head1中删除和head2中相同的元素struct Node{Node(int x){value = x;next = NULL;}int value;Node *next;};//共同点用一个节点Node *pre来标志是否要更新头节点//方法一:unsigned int deleteDuplication1(Node **head1, Node *head2){int count = 0;while (head2){Node *pre = NULL;Node *cur = *head1;//原链表的节点while (cur){if (cur->value == head2->value){count++;Node *pNext = cur->next;//先保留cur的下一个节点delete cur;cur = pNext;if (pre == NULL)//说明在链表head1中,此时的cur前面还没出现与head2这个节点不同的元素*head1 = cur;elsepre->next = cur;}else{pre = cur;cur = cur->next;}}head2 = head2->next;}return count;}//方法二unsigned int deleteDuplication2(Node **head1, Node *head2){int count = 0;while (head2){Node *pre = NULL;Node *cur = *head1;while (cur){bool needDelete = false;if (cur->value == head2->value)needDelete = true;if (!needDelete){pre = cur;cur = cur->next;}else{int value = cur->value;Node *pNext = NULL;while (cur && cur->value == value)//与方法一的不同之处多了一个循环{count++;pNext = cur->next;//保留cur的下一个节点delete cur;cur = pNext;}if (pre == NULL)//说明在链表head1中,此时的cur前面还没出现与head2这个节点不同的元素*head1 = cur;elsepre->next = cur;}}head2 = head2->next;}return count;}void print(Node *head){while (head){cout << head->value << " ";head = head->next;}cout << endl;}int main(){//建立第1个链表Node *p1 = new Node(3);Node *p2 = new Node(2);Node *p3 = new Node(3);Node *p4 = new Node(3);Node *p5 = new Node(4);Node *p6 = new Node(4);p1->next = p2;p2->next = p3;p3->next = p4;p4->next = p5;p5->next = p6;//打印第1个链表print(p1);//建立第2个链表Node *q1 = new Node(3);Node *q2 = new Node(3);Node *q3 = new Node(4);Node *q4 = new Node(4);q1->next = q2;q2->next = q3;q3->next = q4;//打印第2个链表print(q1);int count = deleteDuplication1(&p1, q1);//int count = deleteDuplication2(&p1, q1);//删除之后,打印printf("删除后,第一个链表为:\n");print(p1);cout << "删除的个数为:" << count << endl;return 0;}
0 0
- 从一个链表channelHead中删除和channelToDeleteHead中相同的元素
- 删除串中相同的元素:一个做法
- 关于删除数组中相同元素的一个小技巧
- 删除串中相同的元素
- [python]删除列表中相同的元素
- 删除数组中相同的元素
- 删除字符串中相同的元素
- 删除数组中相同的元素
- 判断一个字符串数组中相同和不同的元素
- 删除任意数组中相同的元素 , 删除排序后的数组中相同的元素
- 删除序列中相同元素
- java中从一个对象数组中删除元素和判断对象数组存了几个元素的方法
- 根据指定的元素删除数组中相同的元素
- 数据结构之从有序的顺序表中删除所有其值重复的元素,使表中的元素均不相同
- 设计一个算法,删除一个顺序表中从第i个元素开始的k个元素。
- 编写一个函数:将一个字符串中相同的元素删除,并在main()中调⽤用,并输出.
- <顺序表>从一个有序顺序表中删除重复的元素
- 设计一个算法,从顺序表中删除所有值为x的元素
- linux gcc常用命令
- 由点云创建深度图
- FragemntTabHost的简单使用
- Java--JavaWeb使用commons-dbutils简化数据库操作
- Leercode 35 Search Insert Position
- 从一个链表channelHead中删除和channelToDeleteHead中相同的元素
- ScrollView判断滑动到底部和顶部
- source insight 中文注释为乱码解决
- .Net下RabbitMQ消息队列 优先级ID设置
- CocoaPods安装和使用教程
- mv删除包含隐藏文件的所有文件
- C++中substr、find、refind函数的用法
- TCP/IP详解,卷1:协议,第八章:Traceroute程序
- Centos 7 安装VNC步骤