剑指offer:删除重复的节点
来源:互联网 发布:文字录入 网络兼职 编辑:程序博客网 时间:2024/05/22 15:27
// 删除链表的重复节点fanal.cpp : 定义控制台应用程序的入口点。//题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,// 重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5//解题思路:先在草稿纸上画出几种可能的情况(头结点可能会改变的情况),分析后可知,需要三个指针//分别指向这次的节点,下一个节点,上一次的节点(需要将上次不重复的节点指向这一次不重复的节点上)// 然后循环这次的节点进行判断就行了。#include "stdafx.h"struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};ListNode* deleteDuplication(ListNode* pHead){if (pHead == NULL)return pHead;ListNode* cur = pHead; //当前节点ListNode* pre = NULL; //上一个节点ListNode* next = NULL;//下次的节点while (cur != NULL) {next = cur->next; //下一个节点的赋值if (next != NULL && cur->val == next->val) { //当发现重复节点的时候while (next != NULL && cur->val == next->val) { //因为可能有多个重复的节点next = next->next; //一直找到下个不为这个的值}cur = next; //将当前节点赋值为不重复的值if (pre != NULL) //如果pre不为NULL,就需要将pre指向这次节点pre->next = cur; //虽然可能会重复,但下次会再次进行判断}else {if (pre == NULL) { //pre为NULL的时候就需要将这次不重复的节点赋值给prepHead = cur; //将head也要重新赋值,防止头指针就重复pre = cur;}else {pre->next = cur; //pre不为null的时候,就需要将pre的next指向这次的cur,将链表链接起来pre = cur;//pre为这次的节点了}cur = cur->next; //遍历下个节点}}if (pre == NULL)//如果全部都是重复的节点,pre为NULL,return nullreturn NULL;return pHead;}int main(){ListNode* head;ListNode* tmp1 = new ListNode(1);head = tmp1;ListNode* tmp2 = new ListNode(1);ListNode* tmp3 = new ListNode(1);ListNode* tmp4 = new ListNode(1);ListNode* tmp5 = new ListNode(1);ListNode* tmp6 = new ListNode(1);ListNode* tmp7 = new ListNode(1);ListNode* tmp8 = new ListNode(5);tmp1->next = tmp2;tmp2->next = tmp3;tmp3->next = tmp4;tmp4->next = tmp5;tmp5->next = tmp6;tmp6->next = tmp7;tmp7->next = tmp8;ListNode* tm = deleteDuplication(head);return 0;}
0 0
- 剑指offer:删除重复的节点
- 剑指offer-删除链表中重复的节点
- 剑指offer-----删除链表中重复的 节点
- 《剑指offer》删除链表中重复的节点
- 剑指Offer--删除链表中重复的节点
- 剑指offer 57 - 删除链表中重复的节点
- 剑指offer系列之五十八:删除链表中重复的节点
- 剑指offer(59):删除链表中重复的节点
- 《剑指Offer》面试题57:删除链表中重复的节点
- 剑指offer-----删除链表中重复的节点(java版)
- 【剑指offer】面试题18:删除链表中重复的节点
- 剑指Offer—56—删除链表中重复的节点
- 剑指offer之删除链表中重复的节点
- 剑指offer-57:删除链表中重复节点
- 8.剑指offer-删除链表中重复节点
- 剑指offer-删除链表重复节点
- 剑指offer-删除链表中重复节点
- 剑指offer系列之55:删除链表汇总重复的节点
- IE盒子模型和标准盒子模型区别
- MD5初涉猎
- pip 命令相关错误
- Linux中gpasswd命令的使用方法
- SPI通信协议
- 剑指offer:删除重复的节点
- 架构高性能网站秘笈(六)——构建数据缓冲区
- onItemClick监听器四个arg参数
- 安卓中的坐标系
- PHP格式化字符串函数 sprintf()
- C++面试及答案解析
- Java 流 缓冲流的使用
- file_get_contents模拟浏览器访问的时候乱码
- Spring官网下载dist.zip的几种方法