aboutsummaryrefslogtreecommitdiffstats
path: root/test/DSGraphs/ggcollapse.c
blob: c055caf668c7c0efe844978b536cac74c0a89209 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include <stdio.h>

typedef struct Tree_struct {
  int data;
  struct Tree_struct *left, *right;
} Tree;

static Tree T1, T2, T3, T4, T5;
static Tree *Root, *ANode;
static int  N = 4107;

/* forces *Tb->right to be collapsed */
void makeMore(Tree* Ta, Tree* Tb)
{
  Ta->left  = &T1;
  Ta->right = &T2;
  Tb->left  = &T4;
  Tb->right = (Tree*) (((char*) &T5) + 5); /* point to fifth byte of T5 */
}

void makeRoots()
{
  T1.left = &T2;
  makeMore(&T1, &T3);
}

int main()
{
  makeRoots();
  T3.right = &T4;
  printf("T3.data = %d\n", T3.data);
}