借助栈将一个带头节点的单链表倒置

前端之家收集整理的这篇文章主要介绍了借助栈将一个带头节点的单链表倒置前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

分析:

先理解倒置: 倒置前:1->2->3倒置后:3->2->1

思路:先沿着链表从头到尾扫一遍 将链表的每个结点的data的值依次入栈; 在沿着链表扫一遍 将栈中的元素一次出栈 并填入到每个结点的data中.

算法如下:

void reverse_list(LinkedListTP * head)

{

LStackTP ls,p;

DataTpye x;

InisStack(&ls); /*初始化链栈*/

p= head->next; /*将链栈p的指针指向头结点指向的结点*/

while(p!=null){

Push(&ls,p->data); /*将链表的data依次入栈到ls*/

p=p->next;

}

p= head->next; /*将p重新指到链表头结点所指向的结点*/

while(!EmptyStack(&ls)){

Pop(&ls,&x);

p->data=x; /*替换链表的数据?*/

p=p->next;

}

}

猜你在找的设计模式相关文章