3597 Problem F 算法2-25 有序单链表删除重复元素
2018-02-09 21:37
417 查看
问题 F: 算法2-25 有序单链表删除重复元素
时间限制: 30 Sec 内存限制: 128 MB
献花: 30 解决: 17
[献花][花圈][TK题库]
题目描述
根据一个递增的整数序列构造有序单链表,删除其中的重复元素
输入
输入包括多组测试数据,每组测试数据占一行,第一个为大于等于0的整数n,表示该单链表的长度,后面跟着n个整数,表示链表的每一个元素。整数之间用空格隔开
输出
针对每组测试数据,输出包括两行,分别是删除前和删除后的链表元素,用空格隔开
如果链表为空,则只输出一行,list is empty
样例输入
5 1 2 3 4 5
5 1 1 2 2 3
0
样例输出
1 2 3 4 5
1 2 3 4 5
1 1 2 2 3
1 2 3
list is empty
时间限制: 30 Sec 内存限制: 128 MB
献花: 30 解决: 17
[献花][花圈][TK题库]
题目描述
根据一个递增的整数序列构造有序单链表,删除其中的重复元素
输入
输入包括多组测试数据,每组测试数据占一行,第一个为大于等于0的整数n,表示该单链表的长度,后面跟着n个整数,表示链表的每一个元素。整数之间用空格隔开
输出
针对每组测试数据,输出包括两行,分别是删除前和删除后的链表元素,用空格隔开
如果链表为空,则只输出一行,list is empty
样例输入
5 1 2 3 4 5
5 1 1 2 2 3
0
样例输出
1 2 3 4 5
1 2 3 4 5
1 1 2 2 3
1 2 3
list is empty
#define _CRT_SECURE_NO_WARNINGS #include <unordered_map> #include <algorithm> #include <iostream> #include <cstring> #include <string> #include <vector> #include <stack> #include <queue> #include <map> using namespace std; typedef struct LNode { int data; LNode * next; }LNode, *LinkList; void CreateLink(LinkList &L,int n) { L = new LNode; L->next = NULL; int data; LinkList p = L, q; if (n == 0) printf("list is empty\n"); else { for (int i = 0; i < n; ++i) { scanf("%d", &data); q = new LNode; q->data = data; q->next = NULL; p->next = q; p = q; printf("%d ", data); } printf("\n"); } } void DestoryList(LinkList &L) { LinkList p = L,q; L = NULL; while (p) { q = p->next; delete p; p = q; } } void GetRidSameElem(LinkList & L) { LinkList p = L; if (p->next) p = p->next; else return; LinkList q = p->next,tmp; while (p && q) { if (p->data == q->data) { tmp = q; q = q->next; p->next = q; delete tmp; } else { p = p->next; q = q->next; } } } void PrintList(const LinkList L) { LinkList p = L->next; if (p) { while (p) { printf("%d ", p->data); p = p->next; } printf("\n"); } } int main() { #ifdef _DEBUG freopen("data.txt", "r+", stdin); #endif // _DEBUG int n; LinkList L; while (EOF != scanf("%d", &n)) { CreateLink(L,n); GetRidSameElem(L); PrintList(L); DestoryList(L); } return 0; } /************************************************************** Problem: 3597 User: Sharwen Language: C++ Result: 升仙 Time:67 ms Memory:4744 kb ****************************************************************/
相关文章推荐
- lintcode&九章算法——100. 删除有序数组里的重复元素 ? 待解决
- [LeetCode]Merge Two Sorted Lists & Remove Duplicates from Sorted List 两个有序链表合并为一个&删除链表重复元素
- 删除有序链表的重复元素 Remove Duplicates from Sorted List
- 左程云著算法与数据结构题目最优解笔记-删除无序链表中重复的元素
- 《数据结构与算法——C语言描述》答案 3.16 删除链表中的重复元素
- 单链表删除有序重复元素
- 算法:有序数组删除重复元素,和查找等值键的问题
- 有序链表删除重复元素
- 【LeetCode-面试算法经典-Java实现】【082-Remove Duplicates from Sorted List II(排序链表中删除重复元素II)】
- leetcode 删除有序链表中的重复元素
- 有序链表的重复元素删除
- leetcode-83. Remove Duplicates from Sorted List(删除有序链表中的重复元素)
- 82. Remove Duplicates from Sorted List II(删除有序链表中的重复元素)
- 已知线性表中元素以值递增有序排列,并以单链表作为存储结构,设计一个算法,删除表中值相同的多余元素
- [2178]链表的有序集合 (链表的插排法+重复元素的删除) SDUT
- leetcode83,删除有序链表中的重复元素
- [LeetCode]83. Remove Duplicates from Sorted List(删除有序链表的重复元素 )
- [2178]链表的有序集合 (链表的插排法+重复元素的删除) SDUT
- 有序整型数组A,大小为n,请给出一个O(n)的算法,删除重复元素,O(1)空间
- lintcode&九章算法——101. 删除有序数组里的重复元素 II ? 待解决