笔试题:删除链表中重复的节点
来源:互联网 发布:无法修改mac地址 编辑:程序博客网 时间:2024/04/29 04:35
#include <iostream>#include <queue>using namespace std;struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { queue<ListNode*> Q; ListNode *p = pHead; int count; if (p == NULL)return NULL; while (p != NULL) { count = 1; //1 1 2 3 3 4 5 5 int temp = p->val; while (p->next != NULL && p->next->val == temp) { count++; p = p->next; } if (count == 1) { Q.push(p); } p = p->next; } if (Q.empty() == true)return NULL; p = NULL; while (Q.empty() == false) { if (p == NULL) { p = Q.front(); Q.pop(); pHead = p; } else { p->next = Q.front(); Q.pop(); p = p->next; p->next = NULL; } } return pHead; }};void Insert(ListNode ** t,int a[],int n){ ListNode *p = NULL; for (int i = 0; i < n; i++) { if (p == NULL) { p = new ListNode(a[i]); *t=p; } else { ListNode *s = new ListNode(a[i]); p->next = s; p = s; } }}void Printf(ListNode *t){ while(t != NULL) { cout << t->val << " "; t = t->next; }}int main(){ ListNode *f=NULL; int a[] = {1,1,2,3,3,4,5,5}; Insert(&f,a,sizeof(a)/sizeof(int)); Printf(f); cout << endl; Solution sl; ListNode* p = sl.deleteDuplication(f); Printf(p); return 0;}
0 0
- 笔试题:删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点
- 删除链表中重复的节点。
- 删除链表中重复的节点
- 删除链表中重复的节点
- 【IT笔试面试题整理】删除无序链表中重复的节点
- 【链表】删除链表中连续重复的节点
- 删除单向链表中重复的节点
- 57 - 删除链表中重复的节点
- 剑指offer-删除链表中重复的节点
- 剑指offer-----删除链表中重复的 节点
- hdu 1124 Factorial(末尾0)
- php配置
- Linux环境安装IPython配置python开发环境
- 【pcDuino开源硬件】开机篇
- A+B Problem
- 笔试题:删除链表中重复的节点
- C#中new、override、virtual关键字的区别
- 联通宽带10M以下只能3台电脑上网
- CSS列表和一些变化情况
- PAT 1084. Broken Keyboard (20)
- 关于鼠标在VirtualBOX与原始系统中自由切换的实现
- HDU 2087 剪花布条
- UVA10129欧拉道路
- 懒加载和抓取策略