算法学习-排序链表中去重
来源:互联网 发布:啊哈算法2 pdf 完整版 编辑:程序博客网 时间:2024/06/05 13:01
题目
给定排序的链表,删除重复元素,只保留重复元素第一次出现的结点。
如:
给定:2->3->3->5->7->8->8->8->9->9-10
返回:2->3->5->7->8->9-10
解析
代码如下:若p->next的值和p的值相等,则将p->next->next赋值给p,删除p->next;重复上述过程,直至链表尾端。
// suanfa1.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include <stdlib.h>typedef struct tagSNode{int value;tagSNode* pNext;tagSNode(int v): value(v), pNext(NULL){}}SNode;void Print(SNode* pHead){if (!pHead){return;}SNode* p = pHead->pNext;while(p){printf("%d ", p->value);p = p->pNext;}printf("\n");}void DeleteDuplicateNode(SNode* pHead){SNode* pPre = pHead->pNext;SNode* pCur;while (pPre){pCur = pPre->pNext;if (pCur && (pCur->value == pPre->value)){pPre->pNext = pCur->pNext;delete pCur;}else{pPre = pCur;}}}void Destory(SNode* pHead){SNode* next;while (pHead){next = pHead->pNext;delete pHead;pHead = next;}}int _tmain(int argc, _TCHAR* argv[]){SNode* pHead = new SNode(0);int data[] = { 2, 3, 3, 5, 7, 8, 8, 8, 9, 9, 30};int size = sizeof(data) / sizeof(int);for (int i = size - 1; i >= 0; i--){SNode* p = new SNode(data[i]);p->pNext = pHead->pNext;pHead->pNext = p;}Print(pHead);DeleteDuplicateNode(pHead);Print(pHead);Destory(pHead);system("pause");return 0;}
还有一个版本去重是将有重复的都删除掉,不做解释了,无序的先自己排序然后进行去重
0 0
- 算法学习-排序链表中去重
- 算法学习-排序算法
- 排序算法学习- 快速排序
- 排序算法学习-冒泡排序
- 排序算法学习:快速排序
- 常见排序算法学习
- 算法学习_排序
- 算法学习-常用排序
- 冒泡排序算法学习
- 排序算法学习
- 算法学习 数组排序
- 算法学习--排序
- 算法学习 之排序
- 排序算法学习
- 排序算法学习笔记
- 排序算法学习笔记
- 排序问题 - 算法学习
- 算法学习-归并排序
- 微信小程序(五):轮播
- 百度地图集成报错UnsatisfiedLinkError处理
- 深度优先遍历的非递归
- ICMP是:Internet 控制信息协议(ICMP)是 IP 组的一个整合部分,没有具体的端口号
- cxf+spring自定义restful接口返回消息
- 算法学习-排序链表中去重
- 易飞ERP 9.0.12注册机
- 基于FFMPEG和SDL的音视频播放器
- 【原创】比赛
- Android 6.0运行时权限的申请使用及EasyPermissions的使用
- 1100. Mars Numbers (20)
- ffmpeg 视频拼接
- eclipse tomcat 内存不够解决
- Django 1.环境搭建