• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- main.c --------------------------------------------------*- C++ -*-===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 #include <stdio.h>
10 
11 class Task {
12 public:
13     int id;
14     Task *next;
Task(int i,Task * n)15     Task(int i, Task *n):
16         id(i),
17         next(n)
18     {}
19 };
20 
21 
main(int argc,char const * argv[])22 int main (int argc, char const *argv[])
23 {
24     Task *task_head = NULL;
25     Task *task1 = new Task(1, NULL);
26     Task *task2 = new Task(2, NULL);
27     Task *task3 = new Task(3, NULL); // Orphaned.
28     Task *task4 = new Task(4, NULL);
29     Task *task5 = new Task(5, NULL);
30 
31     task_head = task1;
32     task1->next = task2;
33     task2->next = task4;
34     task4->next = task5;
35 
36     int total = 0;
37     Task *t = task_head;
38     while (t != NULL) {
39         if (t->id >= 0)
40             ++total;
41         t = t->next;
42     }
43     printf("We have a total number of %d tasks\n", total);
44 
45     // This corresponds to an empty task list.
46     Task *empty_task_head = NULL;
47 
48     Task *task_evil = new Task(1, NULL);
49     Task *task_2 = new Task(2, NULL);
50     Task *task_3 = new Task(3, NULL);
51     task_evil->next = task_2;
52     task_2->next = task_3;
53     task_3->next = task_evil; // In order to cause inifinite loop. :-)
54 
55     return 0; // Break at this line
56 }
57