单链表是否有环问题
来源:互联网 发布:mac链接不上硬盘 编辑:程序博客网 时间:2024/05/17 03:53
有很多种方式解决问题,我这里只说一种方法
使用p、q两个指针,p每次向前走一步,q每次向前走两步,若在某时候p == q,则存在环,如图:
代码实现:
#include <stdio.h>#include <stdlib.h>#define LEN 8typedef struct node{char val;struct node *next;}*node_t;int has_loop2(node_t head);int main(){node_t* arr = (node_t*)malloc(sizeof(struct node)*LEN);arr[0] = (node_t)malloc(sizeof(struct node));int i;for(i = 1;i<LEN;i++){arr[i]=(node_t)malloc(sizeof(struct node));arr[i-1]->next = arr[i];}arr[LEN - 1]->next = NULL;if(has_loop2(arr[0]))printf("是环\n");elseprintf("不是环\n");return 0;}int has_loop2(node_t head){node_t p = head;node_t q = head;while(p!=NULL && q !=NULL){p = p->next;//p走一步if(q->next != NULL)q = q->next->next;//q走两步if(p == q)//如果相等则退出,否则继续走,直到重合return 1;p = p->next;q = q->next;if(q !=NULL)q = q->next;if(p!=NULL && p == q){return 1;}}return 0;}
阅读全文
2 0
- 单链表是否有环问题
- 判断单链表是否存在环有问题
- 单链表是否有环的问题
- 单链表是否有环的问题
- 单链表是否有环
- 单链表是否有环
- 单链表是否有环
- 单链表是否有环
- 单链表是否有环
- 单链表是否有环及双链表相交问题
- 判断单链表是否有环的相关问题
- 判断一个单链表是否有环及其衍生问题
- 判断链表是否有环问题
- 判断单链表中是否有环的问题
- 单链表中是否有环的问题
- 单链表是否有环、是否相交
- 链表是否相交,链表是否有环问题
- 判断单链表是否有环
- Java 并发编程:volatile的使用及其原理(转)
- JS 实现复制粘贴功能
- CoordinatorLayout
- LeetCode 450 Delete Node in a BST(删除BST节点)
- 01
- 单链表是否有环问题
- Java 日期处理工具类
- Oracle中char数据类型,length长度不足时,会自动用空格补上
- Easyui 分页 官方文档修改后很容易懂
- vue调用百度地图api时Bmap没有定义的解决办法
- centOS重装mariadb
- hue 设置中文
- LeetCode 40 Combination Sum II
- 离散题目18 求传递闭包 warshell算法