剑指offer之判断链表是否包含环
生活随笔
收集整理的這篇文章主要介紹了
剑指offer之判断链表是否包含环
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1 問題
判斷鏈表是否包含環(huán)
?
?
?
2 思路
2個(gè)指針,一個(gè)指針走一步,一個(gè)指針走2步,如果相遇則有,反之無。
?
?
?
?
3 代碼實(shí)現(xiàn)
#include <stdio.h> #include <stdlib.h>#define true 1 #define false 0;typedef struct node {int value;struct node *next; }Node;/**判斷鏈表是否有環(huán)*/ int isCircleList(Node *head) {if (head == NULL){return false;}Node *first = NULL;Node *second = NULL;first = head;second = head;while (second != NULL && (second->next) != NULL && (second->next->next != NULL)){first = first->next;second = second->next->next;if (first == second){return true;}}return false; }int main() {Node *head = NULL;Node *node1 = NULL;Node *node2 = NULL;Node *node3 = NULL;Node *node4 = NULL;Node *node5 = NULL;Node *node6 = NULL;Node *node7 = NULL;head = (Node *)malloc(sizeof(Node));node1 = (Node *)malloc(sizeof(Node));node2 = (Node *)malloc(sizeof(Node));node3 = (Node *)malloc(sizeof(Node));node4 = (Node *)malloc(sizeof(Node));node5 = (Node *)malloc(sizeof(Node));node6 = (Node *)malloc(sizeof(Node));node7 = (Node *)malloc(sizeof(Node));if (head == NULL || node1 == NULL || node2 == NULL || node3 == NULL|| node4 == NULL || node5 == NULL || node6 == NULL || node7 == NULL){printf("malloc fail\n");return false;}// node7<-node6 <-node5// | |//head->node1->node2->node3->node4head->value = 0;head->next = node1;node1->value = 1;node1->next = node2;node2->value = 2;node2->next = node3;node3->value = 3;node3->next = node4;node4->value = 4;node4->next = node5;node5->value = 5;node5->next = node6;node6->value = 6;node6->next = node7;node7->value = 7;node7->next = node2;int result = isCircleList(head);if (result){printf("list have circle\n");}else{printf("list do not have circle\n");}return true; }?
?
?
4 運(yùn)行結(jié)果
list have circle?
總結(jié)
以上是生活随笔為你收集整理的剑指offer之判断链表是否包含环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之可视化查看磁盘大小并且删除大
- 下一篇: WireShark抓包之提示Alert