Called constructor for node 0x22ff8: i 0 Called constructor for node 0x23008: 0 Called constructor for node 0x23018: l 0 Called constructor for node 0x23028: o 0 Called constructor for node 0x23038: v 0 Called constructor for node 0x23048: e 0 Called constructor for node 0x23058: 0 Called constructor for node 0x23068: p 0 Called constructor for node 0x23078: e 0 Called constructor for node 0x23088: e 0 Called constructor for node 0x23098: p 0 Called constructor for node 0x230a8: s 0 Called constructor for list at 0xffbefbc0 head is 0x22ff8 0x22ff8: i 0x23008 0x23008: 0x23018 0x23018: l 0x23028 0x23028: o 0x23038 0x23038: v 0x23048 0x23048: e 0x23058 0x23058: 0x23068 0x23068: p 0x23078 0x23078: e 0x23088 0x23088: e 0x23098 0x23098: p 0x230a8 0x230a8: s 0 list1 is at 0xffbefbc0 head is 0x22ff8 0x22ff8: i 0x23008 0x23008: 0x23018 0x23018: l 0x23028 0x23028: o 0x23038 0x23038: v 0x23048 0x23048: e 0x23058 0x23058: 0x23068 0x23068: p 0x23078 0x23078: e 0x23088 0x23088: e 0x23098 0x23098: p 0x230a8 0x230a8: s 0 Counting iteratively, there are 3 e's beginning recursive traversal entering count_e_private: item = i count = -99 entering count_e_private: item = count = -99 entering count_e_private: item = l count = -99 entering count_e_private: item = o count = -99 entering count_e_private: item = v count = -99 entering count_e_private: item = e count = -99 entering count_e_private: item = count = -99 entering count_e_private: item = p count = -99 entering count_e_private: item = e count = -99 entering count_e_private: item = e count = -99 entering count_e_private: item = p count = -99 entering count_e_private: item = s count = -99 leaving count_e_private: item = s count = 0 leaving count_e_private: item = p count = 0 leaving count_e_private: item = e count = 1 leaving count_e_private: item = e count = 2 leaving count_e_private: item = p count = 2 leaving count_e_private: item = count = 2 leaving count_e_private: item = e count = 3 leaving count_e_private: item = v count = 3 leaving count_e_private: item = o count = 3 leaving count_e_private: item = l count = 3 leaving count_e_private: item = count = 3 leaving count_e_private: item = i count = 3 ending recursive traversal Counting recursively, there are 3 e's beginning tail-recursive traversal entering count_e_tailpriv: item = i has 0e's entering count_e_tailpriv: item = has 0e's entering count_e_tailpriv: item = l has 0e's entering count_e_tailpriv: item = o has 0e's entering count_e_tailpriv: item = v has 0e's entering count_e_tailpriv: item = e has 1e's entering count_e_tailpriv: item = has 0e's entering count_e_tailpriv: item = p has 0e's entering count_e_tailpriv: item = e has 1e's entering count_e_tailpriv: item = e has 1e's entering count_e_tailpriv: item = p has 0e's entering count_e_tailpriv: item = s has 0e's leaving count_e_tailpriv: item = p total_count = 0 leaving count_e_tailpriv: item = e total_count = 1 leaving count_e_tailpriv: item = e total_count = 2 leaving count_e_tailpriv: item = p total_count = 2 leaving count_e_tailpriv: item = total_count = 2 leaving count_e_tailpriv: item = e total_count = 3 leaving count_e_tailpriv: item = v total_count = 3 leaving count_e_tailpriv: item = o total_count = 3 leaving count_e_tailpriv: item = l total_count = 3 leaving count_e_tailpriv: item = total_count = 3 leaving count_e_tailpriv: item = i total_count = 3 ending tail-recursive traversal Via tail recursion, there are 3 e's Called copy constructor to copy list at 0xffbefbc0 New list is at 0xffbefbb8 head is 0x230b8 0x230b8: i 0x230c8 0x230c8: 0x230d8 0x230d8: l 0x230e8 0x230e8: o 0x230f8 0x230f8: v 0x23108 0x23108: e 0x23118 0x23118: 0x23128 0x23128: p 0x23138 0x23138: e 0x23148 0x23148: e 0x23158 0x23158: p 0x23168 0x23168: s 0 list2 is at 0xffbefbb8 head is 0x230b8 0x230b8: i 0x230c8 0x230c8: 0x230d8 0x230d8: l 0x230e8 0x230e8: o 0x230f8 0x230f8: v 0x23108 0x23108: e 0x23118 0x23118: 0x23128 0x23128: p 0x23138 0x23138: e 0x23148 0x23148: e 0x23158 0x23158: p 0x23168 0x23168: s 0 Called overloaded asgt op from list at 0xffbefbc0 Freeing memory at 0x230b8 Freeing memory at 0x230c8 Freeing memory at 0x230d8 Freeing memory at 0x230e8 Freeing memory at 0x230f8 Freeing memory at 0x23108 Freeing memory at 0x23118 Freeing memory at 0x23128 Freeing memory at 0x23138 Freeing memory at 0x23148 Freeing memory at 0x23158 Freeing memory at 0x23168 Result is at 0xffbefbb8 head is 0x23168 0x23168: i 0x23178 0x23178: 0x230b8 0x230b8: l 0x230c8 0x230c8: o 0x230d8 0x230d8: v 0x230e8 0x230e8: e 0x230f8 0x230f8: 0x23108 0x23108: p 0x23118 0x23118: e 0x23128 0x23128: e 0x23138 0x23138: p 0x23148 0x23148: s 0 list2 is at 0xffbefbb8 head is 0x23168 0x23168: i 0x23178 0x23178: 0x230b8 0x230b8: l 0x230c8 0x230c8: o 0x230d8 0x230d8: v 0x230e8 0x230e8: e 0x230f8 0x230f8: 0x23108 0x23108: p 0x23118 0x23118: e 0x23128 0x23128: e 0x23138 0x23138: p 0x23148 0x23148: s 0 Called destructor for list at 0xffbefbb8 Freeing memory at 0x23168 Freeing memory at 0x23178 Freeing memory at 0x230b8 Freeing memory at 0x230c8 Freeing memory at 0x230d8 Freeing memory at 0x230e8 Freeing memory at 0x230f8 Freeing memory at 0x23108 Freeing memory at 0x23118 Freeing memory at 0x23128 Freeing memory at 0x23138 Freeing memory at 0x23148 Called destructor for list at 0xffbefbc0 Freeing memory at 0x22ff8 Freeing memory at 0x23008 Freeing memory at 0x23018 Freeing memory at 0x23028 Freeing memory at 0x23038 Freeing memory at 0x23048 Freeing memory at 0x23058 Freeing memory at 0x23068 Freeing memory at 0x23078 Freeing memory at 0x23088 Freeing memory at 0x23098 Freeing memory at 0x230a8