1.假设不使用尾指针
因为这里是单链表,所以如果没有尾指针的话,每次都得从单链表的头结点开始遍历,直到尾结点。在原单链表的尾结点表示为
L
−
>
n
e
x
t
−
>
n
e
x
t
−
>
⋯
−
>
n
e
x
t
L->next->next->\cdots ->next
L−>next−>next−>⋯−>next
将新增尾结点连接到原单链表尾部时
L
−
>
n
e
x
t
−
>
n
e
x
t
−
>
⋯
−
>
n
e
x
t
=
p
L->next->next->\cdots ->next=p
L−>next−>next−>⋯−>next=p
显然这样效率十分低
2.假设使用尾指针
使用尾指针指向当前单链表的尾结点,则当新结点加入时,可通过
r
−
>
n
e
x
t
=
p
r->next=p
r−>next=p
来实现连接
连接完成后将尾指针再次指向新链表的尾部(即新增结点p)
r
=
p
r=p
r=p