Here again is the non-member interleave function for Sequences from Sequence.cpp:
void interleave(const Sequence& seq1, const Sequence& seq2, Sequence& result)
{
Sequence res;
int n1 = seq1.size();
int n2 = seq2.size();
int nmin = (n1 < n2 ? n1 : n2);
int resultPos = 0;
for (int k = 0; k < nmin; k++)
{
ItemType v;
seq1.get(k, v);
res.insert(resultPos, v);
resultPos++;
seq2.get(k, v);
res.insert(resultPos, v);
resultPos++;
}
const Sequence& s = (n1 > nmin ? seq1 : seq2);
int n = (n1 > nmin ? n1 : n2);
for (int k = nmin ; k < n; k++)
{
ItemType v;
s.get(k, v);
res.insert(resultPos, v);
resultPos++;
}
result.swap(res);
}
Assume that seq1, seq2, and the old value of result each have N elements. In terms of the number of ItemType objects visited (in the linked list nodes) during the execution of this function, what is its time complexity? Why?