C++循环单链表删除连续相邻重复值
比如:1(头)->2->2->3->3->1->1(头) 去除以后的结果是1->2->3,注意头尾的1也要去掉一个。
#include "stdafx.h"
#include <iostream> using namespace std; struct tnode
{
tnode* next;
int value;
}; tnode* unique(tnode *head)
{
tnode* p = head;
while (p->next != head)
{
if (p->next->value == p->value)
{
tnode* temp = p->next;
p->next = temp->next;
delete temp;
}
else
{
p = p->next;
}
}
if (p->value == head->value)
{
p->next = head->next;
delete head;
head = p;
}
return head;
}; void print(tnode* head)
{
tnode* i = head;
while (i->next != head)
{
cout << i->value << " ";
i = i->next;
}
cout << i->value << endl;
} int _tmain(int argc, _TCHAR* argv[])
{
tnode* node1 = new tnode;
node1->value = ;
tnode* node2 = new tnode;
node2->value = ;
tnode* node3 = new tnode;
node3->value = ;
tnode* node4 = new tnode;
node4->value = ;
tnode* node5 = new tnode;
node5->value = ;
tnode* node6 = new tnode;
node6->value = ;
node1->next = node2;
node2->next = node3;
node3->next = node4;
node4->next = node5;
node5->next = node6;
node6->next = node1;
tnode* head = unique(node1);
print(head);
return ;
}
C++循环单链表删除连续相邻重复值的更多相关文章
- PTA 循环单链表区间删除 (15 分)
本题要求实现带头结点的循环单链表的创建和单链表的区间删除.L是一个带头结点的循环单链表,函数ListCreate_CL用于创建一个循环单链表,函数ListDelete_CL用于删除取值大于min小于m ...
- 简单约瑟夫环的循环单链表实现(C++)
刚刚接触C++以及数据结构,今天做了第一次尝试用C++和数据结构解决问题,问题是基于约瑟夫环问题的简单版. 先来看看约瑟夫环问题的介绍: 约瑟夫环是一个数学的应用问题:已知n个人(以编号1,2,3.. ...
- C代码实现非循环单链表
C代码实现非循环单链表, 直接上代码. # include <stdio.h> # include <stdlib.h> # include <malloc.h> ...
- C语言版本:循环单链表的实现
SClist.h #ifndef __SCLIST_H__ #define __SCLIST_H__ #include<cstdio> #include<malloc.h> # ...
- c语言循环单链表
/************************************************************************* > File Name: singleLin ...
- c语言有头循环单链表
/************************************************************************* > File Name: singleLin ...
- 【c++版数据结构】之循环单链表的实现(带头结点以及尾节点)
所实现的循环单链表的结构例如以下图所看到的: watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill ...
- 带头结点的循环单链表----------C语言
/***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...
- 循环单链表定义初始化及创建(C语言)
#include <stdio.h> #include <stdlib.h> /** * 含头节点循环单链表定义,初始化 及创建 */ #define OK 1; #defin ...
随机推荐
- LeetCode 19. 删除链表的倒数第N个节点(Remove Nth Node From End Of List)
题目描述 给定一个链表,删除链表的倒数第 n 个节点,并且返回链表的头结点. 示例: 给定一个链表: 1->2->3->4->5, 和 n = 2. 当删除了倒数第二个节点后, ...
- LeetCode 11. 盛最多水的容器(Container With Most Water)
题目描述 给定 n 个非负整数 a1,a2,...,an,每个数代表坐标中的一个点 (i, ai) .画 n 条垂直线,使得垂直线 i 的两个端点分别为 (i, ai) 和 (i, 0).找出其中的两 ...
- 搭建SVN服务器时报错:0x80004002
一.错误信息 Cannot query proxy blanket: no such interface supported (0x80004002) 二.解决方案 这个错误只会在有NVIDIA独立显 ...
- Prism中在Region中注入匹配问题
简单实例说明 [Export] public partial class TitleView : UserControl { public TitleView() { InitializeCompon ...
- ForkJoin使用
一.Fork Join 分而治之的办法 JDk为Fork/Join框架提供了很好的支持,我们想要用这个算法首先得创建一个Fork/Join任务,在JDK中这个任务就叫做:ForJoinTask,只要继 ...
- nagios配置邮件告警
1.编辑配置文件 vim /etc/nagios/objects/contacts.cfg增加如下内容:define contactgroup{ contactgroup_name admins al ...
- 阶段3 2.Spring_05.基于XML的IOC的案例1_3 测试基于XML的IOC案例
编写测试方法. TestMehtod 生成测试方法 只需要改个名字叫做testFindAll 然后就复制这个方法,多复制几次改改名字 findAll方法 编写查询所有的代码 选中和这个方法,run 根 ...
- P2429 【制杖题】
这题目名字也是够了... emmmmmm为什么要用线筛??????不感觉很麻烦吗??????既然是智障制杖题,那么肯定要用很简单的算法啦~下面,我就提供一种非常便于理解的膜你算法~~~很明显,做了这题 ...
- https原理以及golang基本实现
关于https 背景知识 密码学的一些基本知识 大致上分为两类,基于key的加密算法与不基于key的加密算法.现在的算法基本都是基于key的,key就以一串随机数数,更换了key之后,算法还可以继续使 ...
- 微信小程序开发(三)----- 云开发案例
1.发送请求 2.云函数中发送请求,例子request https://github.com/request/request-promise 创建云函数movielist,右键在终端打开,输入 ...