/*
Sort both list from small to big. And then use the following code.
*/
#include <iostream>
using namespace std;
struct Node
{
char data;
Node* next;
};
Node* create()
{
Node* head = NULL;
Node* rear = head;
Node* p; // The pointer points to new created node.
char tmp;
do
{
cout << "Please input integer or char '#':";
cin >> tmp;
if(tmp != '#')
{
p = new Node;
p->data = tmp;
p->next = NULL;
if(head == NULL)
{
head = p;
}
else
{
rear->next = p;
}
rear = p;
}
}
while(tmp != '#');
return head;
}
void print(Node* head)
{
Node* p = head;
if(head != NULL)
{
do
{
cout << p->data << ' ';
p = p->next;
}
while(p != NULL);
}
cout << endl;
}
Node* del(Node* l1, Node* l2)
{
if(!l1 || !l2)
{
return NULL;
}
Node *p = new Node;
p->next = l1;
Node *pL1 = l1, *pL2 = l2, *head = p;
while(pL1 && pL2)
{
if(pL1->data < pL2->data)
{
pL1 = pL1->next;
p = p->next;
}
else if(pL1->data > pL2->data)
{
pL2 = pL2->next;
}
else
{
pL1 = pL1->next;
p->next = pL1;
}
}
l1 = head->next;
return l1;
}
int main()
{
cout << "Please input the first list:" << endl;
Node* l1 = create();
cout << endl << "Please input the second list:" << endl;
Node* l2 = create();
cout << endl << "--------------------------" << endl;
cout << "The first list is: ";
print(l1);
cout << "The second list is: ";
print(l2);
Node* l = del(l1, l2);
cout << endl << "The result list is: ";
print(l);
return 0;
}
// Output:
/*
Please input the first list:
Please input integer or char '#':1
Please input integer or char '#':1
Please input integer or char '#':1
Please input integer or char '#':1
Please input integer or char '#':3
Please input integer or char '#':3
Please input integer or char '#':3
Please input integer or char '#':3
Please input integer or char '#':4
Please input integer or char '#':5
Please input integer or char '#':6
Please input integer or char '#':6
Please input integer or char '#':6
Please input integer or char '#':7
Please input integer or char '#':7
Please input integer or char '#':8
Please input integer or char '#':8
Please input integer or char '#':8
Please input integer or char '#':9
Please input integer or char '#':9
Please input integer or char '#':9
Please input integer or char '#':9
Please input integer or char '#':#
Please input the second list:
Please input integer or char '#':1
Please input integer or char '#':2
Please input integer or char '#':5
Please input integer or char '#':5
Please input integer or char '#':5
Please input integer or char '#':7
Please input integer or char '#':7
Please input integer or char '#':7
Please input integer or char '#':7
Please input integer or char '#':7
Please input integer or char '#':9
Please input integer or char '#':#
--------------------------
The first list is: 1 1 1 1 3 3 3 3 4 5 6 6 6 7 7 8 8 8 9 9 9 9
The second list is: 1 2 5 5 5 7 7 7 7 7 9
The result list is: 3 3 3 3 4 6 6 6 8 8 8
*/
分享到:
相关推荐
严蔚敏-数据结构--链表实现c++实现 还不错哦!``
数据结构-基本算法-静态链表(学生时代源码,调试可运行)
一、基础数据结构-1.链表-2.静态链表
数据结构(C语言版)---静态链表。这是博客配套代码。如果代码中有什么错误欢迎大家指出·············
使用单链表进行多元多项式的运算 两个多元多项式之间的操作 仅供参考
基于C++的数据结构单链表,带主程序可运行,使用头文件可直接编程。
数据结构 线性表和链表 c++面向对象实现 分文件编写
数据结构实验线性表当中的链表结构实现,带有详细注释,小白也能看得懂
主要写了三种链表(单链表 循环链表 双向链表)及其基本操作(操作已封装成类) 详细请看“心希盼 链表.doc ”
数据结构实验--链表进行多项式求和与求积 数据结构实验--链表进行多项式求和与求积 数据结构实验--链表进行多项式求和与求积 数据结构实验--链表进行多项式求和与求积 数据结构实验--链表进行多项式求和与求积
数据结构实现C++线性链表,实现增删改查基本方法
数据结构 作业 链表的操作 完美链表 包括链表的 构造 数值的插入 删除 几种排序。。。。
介绍了数据结构中链表的构建,遍历,求表长,插入以及删除等基本操作,并用c++语言对其进行了功能实现。
数据结构 c++链表 有插入。删除。更新。输入。输出等功能
我们上节讲解了链表的建立,本节讲解的是在链表中指定位置中插入一个结点,以及在指定位置中删除一个结点 指定位置插入一个结点 这里我们在第3个结点后插入一个结点,可以将新结点赋值给第三个结点的next,将原来的第...
数据结构 栈 链表实现 c++ 是模板实现的
链表的定义、遍历、查询、插入、删除、排序等功能实现
数据结构中广义表的c++实现,用的是链表,对广义表表达式的格式判断仅有左右括号匹配,忽略空格,不能有连续的空格.实现的功能包括复制,拼接,删除,求深度,判断相等. 所有的功能都用递归实现,写完之后发现头有点大了.. ...
2.用双向链表做数据结构,编写一个通信录管理系统。本系统应完成以下几方面的功能。 输入信息——enter(); 显示信息——display(); 查找以姓名作为关键字——search(); 删除信息——delete(); 存盘——...
数据结构C语言版-二叉树的三叉链表存储表示.doc