zoukankan      html  css  js  c++  java
  • Data Structure Linked List: Detect and Remove Loop in a Linked List

    http://www.geeksforgeeks.org/detect-and-remove-loop-in-a-linked-list/

     1 #include <iostream>
     2 #include <vector>
     3 #include <algorithm>
     4 #include <queue>
     5 #include <stack>
     6 #include <string>
     7 #include <fstream>
     8 #include <map>
     9 #include <set>
    10 using namespace std;
    11 
    12 struct node {
    13     int data;
    14     node *next;
    15     node() : data(0), next(NULL) { }
    16     node(int d) : data(d), next(NULL) { }
    17 };
    18 
    19 void push(node* &head, int k) {
    20     node *new_node = new node(k);
    21     new_node->next = head;
    22     head = new_node;
    23 }
    24 
    25 void detectandremove(node *&head) {
    26     node *p, *q;
    27     p = q = head;
    28     while (q && q->next) {
    29         q = q->next->next;
    30         p = p->next;
    31         if (p == q) break;
    32     }
    33     if (!q || !q->next) return; //no loop
    34     q = head;
    35     while (q != p) {
    36         q = q->next;
    37         p = p->next;
    38     } //get the starting point of the ring
    39     while (q->next != p) q = q->next; //get the point before the starting point of the ring
    40     q->next = NULL; //remove the ring
    41 }
    42 
    43 void print(node *head) {
    44     while (head) {
    45         cout << head->data << " ";
    46         head = head->next;
    47     }
    48 }
    49 
    50 int main() {
    51     node *head = NULL;
    52     push(head, 10);
    53     push(head, 4);
    54     push(head, 15);
    55     push(head, 20);
    56     push(head, 50);
    57     push(head, 60);
    58     head->next->next->next->next->next->next = head->next->next->next;
    59     detectandremove(head);
    60     print(head);
    61     return 0;
    62 }
  • 相关阅读:
    word-wrap和word-break
    sass编译生成的几个文件
    block settings drupal 8 configuration
    cookie 和 session
    程序员思维
    psr-0 和 psr-4
    eclipse的字符编码问题
    合并代码并上传
    如何部署代码
    301 CACHE
  • 原文地址:https://www.cnblogs.com/yingzhongwen/p/3657848.html
Copyright © 2011-2022 走看看