【数据结构/C语言】借助于栈将一个带头结点的单链表L逆置
编写算法Reverse(LinkList &L),要求借助于栈将一个带头结点的单链表L逆置。其中栈的初始化操作、入栈操作和出栈操作算法名分别为InitStack(&S)、Push(&S,e)、Pop(&S,&e),单链表的存储结构如下:
typedef struct LNode {
ElemType data; // 数据域
struct LNode *next; // 指针域
} LNode, *LinkList;
Status Reverse(LinkList &L)
//借助于栈将一个带头结点的单链表L逆置
{ InitStack(s);//创建一个临时空栈
p=L->next; //p指针指向链表的第一个数据元素结点
while(p!=null)
{ Push(s,p->data);
p=p->next;
}
p=L->next;//p指针指向链表的第一个数据元素结点
while(!StackEmpty()){
Pop(s,p->data);
p=p->next;
}
DestroyStack(s); //销毁临时栈s
return OK;
}// Reverse