011_hasCycle
2024-10-18 05:00:47
/*
* Author :SJQ
*
* Time :2014-07-16-20.21
*
*/
#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std; struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
}; //利用快慢指针,链表有环,则快慢指针一定会相遇
bool hasCycle(ListNode *head)
{
if (!head|| !head->next)
return false; ListNode *fast, *slow;
fast = slow = head;
while(fast)
{
if (!fast->next)
return false; fast = fast->next->next;
slow = slow->next; if (fast == slow)
{
return true;
}
} return false;
} int main()
{
freopen("input.txt", "r", stdin);
int n;
ListNode *head, *tail; while(cin >>n)
{
int num;
for (int i = ; i < n; ++i)
{
cin >> num;
ListNode *temp = (ListNode*)malloc(sizeof(ListNode));
temp->val = num;
temp->next = NULL; if (i == )
{
head = temp;
tail = temp;
}
else
{
tail->next = temp;
tail = tail->next;
} tail->next = NULL;
} tail->next = head->next; //手动每次把最后一个节点和第二个节点连起来
bool flag = hasCycle(head);
if (flag)
cout << "has cycle!" << endl;
else
cout << "no cycle!" << endl;
tail = head;
for (int i = ; i < n; ++i) {
cout << tail->val << " ";
tail =tail->next;
}
cout << endl;
} return ; }
最新文章
- java中 IndexOf()、lastIndexOf()、substring()的用法
- 30-React JSX IN DEPTH
- 图像分割实验:FCN数据集制作,网络模型定义,网络训练(提供数据集和模型文件,以供参考)
- 如何将ADT项目导入Android studio及常見問題
- 【干货】ECS服务器OPENVPN搭建,方便管理所有内网服务器
- Java Web 工作技巧总结 16.8
- 线段树 Interval Tree
- Python包管理工具介绍
- PHP字符串处理常用方法
- ie8如何支持html5
- Linux方面收藏的一点儿资料
- cf C. Vasya and Robot
- UIView的交换实现,子视图交替变换
- 【iOS知识学习】_UITableView简介
- [LeetCode]题解(python):015-3Sum
- 文本变语音引擎 ekho
- Android之布局大全
- vue2.0结合Element实现select动态控制input禁用
- 【大前端攻城狮之路】JavaScript函数式编程
- [转] 图解Seq2Seq模型、RNN结构、Encoder-Decoder模型 到 Attention