单链表删除相同值(单链表)
来源:互联网 发布:mac mini diy 编辑:程序博客网 时间:2024/06/05 18:34
1.题目:
Problem Description
单链表A是递增有序数列,编写算法,删除值相同的多余节点,可能有多组相同值。
Input
输入包含多组测试数据,每组测试数据第一行是一个n,表示有n个数输入,第二行是n个数,当n为零时结束(n>=0)。
Output
输出删除相同值后的列表,每两个数据之间有一个空格。
Sample Input
51 2 2 3 361 1 1 1 1 161 2 3 4 5 60
Sample Output
1 2 311 2 3 4 5 6
2.参考代码:
#include <iostream>using namespace std;struct Node { int data; Node* next;};class LinkList{private: Node* head;public: LinkList(int a[], int n); ~LinkList(); void Delete(); void PrintList();};LinkList::LinkList(int a[], int n){ Node* r, *s; head = new Node; r = head; for (int i = 0; i < n; i++) { s = new Node; s->data = a[i]; s->next = r->next; r->next = s; r = s; } r->next = NULL;}LinkList::~LinkList(){ Node* q; while (head) { q = head; head = head->next; delete q; }}void LinkList::Delete(){ Node* p, *q; p = head->next; q = p->next; while (p && p->next) { if (q->data == p->data) { p->next = q->next; delete q; q = p->next; } else { p = p->next; q = p->next; } }}void LinkList::PrintList(){ Node* p = head->next; if (p) { cout << p->data; p = p->next; while (p) { cout << " " << p->data; p = p->next; } cout << endl; }}int main(){ int i, n, a[1000]; while (cin >> n) { if (n == 0) break; for (i = 0; i < n; i++) cin >> a[i]; LinkList k(a, n); k.Delete(); k.PrintList(); } return 0;}
- 单链表删除相同值
- 单链表删除相同值(单链表)
- 单链表 (反序,删除相同元素)
- 数据结构单链表删除相同元素(int)
- 删除相同值节点
- 【数据结构】单链表的倒序、删除相同结点、按值排序等简单操作用java实现
- 算法--循环单链表删除数值相同的元素
- sql 删除相同记录
- 删除相同的结点
- vecotr删除相同元素
- oracle 删除相同行
- 删除相同字符
- 删除相同的记录
- mysql 删除相同数据
- 求相同后缀首字符(单链表)
- 已知线性表中元素以值递增有序排列,并以单链表作为存储结构,设计一个算法,删除表中值相同的多余元素
- oracle中删除重复数据(几个字段相同的数据为相同记录)
- Ubuntu下删除两个文件夹下相同文件名且相同内容的文件(分色排版)
- 使MySQL对表名不区分大小写
- 1.2 准备源代码阅读环境
- 10048错误(WSAEADDRINUSE)的错误处理
- linux时钟学习__s5pv210 笔记
- 应用级灾备的实现方法V1.0.doc
- 单链表删除相同值(单链表)
- matlab conv2
- [iOS]如何向 appstore 查询已发布 APP 的信息?
- Android ADT+eclipse安装及兼容问题解决方案(不太准确)
- K-based Numbers
- C++编程实用技巧——专家讲述C++程序设计的窍门
- 黑马程序员——复习基础
- openstack-glanceclient error
- mac 终端命令