1fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen//===-- main.c --------------------------------------------------*- C++ -*-===// 2fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// 3fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// The LLVM Compiler Infrastructure 4fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// 5fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// This file is distributed under the University of Illinois Open Source 6fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// License. See LICENSE.TXT for details. 7fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen// 8fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen//===----------------------------------------------------------------------===// 9fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen#include <stdio.h> 10fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen 11fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chenclass Task { 12fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chenpublic: 13fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen int id; 14fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *next; 15fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task(int i, Task *n): 16fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen id(i), 17fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen next(n) 18fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen {} 19fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen}; 20fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen 21fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen 22fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chenint main (int argc, char const *argv[]) 23fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen{ 24d96c9e88f80b8856aa76b7e7dd41acdf2bec202eJohnny Chen Task *task_head = NULL; 25fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *task1 = new Task(1, NULL); 26fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *task2 = new Task(2, NULL); 27fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *task3 = new Task(3, NULL); // Orphaned. 28fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *task4 = new Task(4, NULL); 29fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *task5 = new Task(5, NULL); 30fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen 31d96c9e88f80b8856aa76b7e7dd41acdf2bec202eJohnny Chen task_head = task1; 32fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen task1->next = task2; 33fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen task2->next = task4; 34fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen task4->next = task5; 35fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen 3638581d29207f732ab913f2d0c1f203fce1749b0eJohnny Chen int total = 0; 37fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen Task *t = task_head; 38fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen while (t != NULL) { 39fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen if (t->id >= 0) 40fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen ++total; 41fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen t = t->next; 42fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen } 43fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen printf("We have a total number of %d tasks\n", total); 4438581d29207f732ab913f2d0c1f203fce1749b0eJohnny Chen 4538581d29207f732ab913f2d0c1f203fce1749b0eJohnny Chen // This corresponds to an empty task list. 46d96c9e88f80b8856aa76b7e7dd41acdf2bec202eJohnny Chen Task *empty_task_head = NULL; 4738581d29207f732ab913f2d0c1f203fce1749b0eJohnny Chen 48758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen Task *task_evil = new Task(1, NULL); 49758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen Task *task_2 = new Task(2, NULL); 50758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen Task *task_3 = new Task(3, NULL); 51758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen task_evil->next = task_2; 52758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen task_2->next = task_3; 53758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen task_3->next = task_evil; // In order to cause inifinite loop. :-) 54758db9690ae3d2f65fc5e6ef177581ae8d75221dJohnny Chen 5538581d29207f732ab913f2d0c1f203fce1749b0eJohnny Chen return 0; // Break at this line 56fbebbc9e3b140e77886db46a84f58aef2ea72bb8Johnny Chen} 57