问答题 借助栈实现带表头结点的单链表上的逆置运算。
【正确答案】
【答案解析】由于进栈与出栈顺序正好相反,因此,借助栈可以实现单链表的逆置运算。方法是让单链表中的结点依次进栈,再依次出栈。
void invert(LinkList &L){ //使用引用型参数可不必创建L的副本
Stack S;LinkedNode * p=L->link, * q;
while (p!=NULL) {push(s,p);p=p->link;} //依次将链中结点进栈
p=L; //p起到单链表尾指针作用
while (!isEmpty(S)){ //将栈中保存的结点依次出栈
pop (S,q);p->link=q; //出栈元素链入逆置后的链中
p=p->link; //p进到链表尾结点
}
p->link=NULL; //逆置后的链表收尾
}