标签:
在这篇文章 Linked List 中学习了如何写出单链表的基本操作。
现在来写一个程序进行单链表的逆序操作:
void
Reversal( List L )
{
Position pReversal;
Position P,Pnext;
P = L->Next;
pReversal->Next = NULL;
while( P != NULL )
{
Pnext = P->Next;
P->Next = pReversal->Next;
pReversal->Next = P;
P = Pnext;/* also P = P->Next, but you can't use like that */
}
L->Next = pReversal->Next;
}在程序中定义了三个指向结构体结点的指针,分别是pReversal,这个指针指向逆序后的链表的第一个结点,P,Pnext,很明显,P是链接到逆序链表的最新元素,而Pnext则是这个元素在原来正序链表的下一个元素。
在主程序中可以这样调用:
/* Main */
int
main(void)
{
ElementType i = 'z';
List La = malloc( sizeof( struct Node ) );
La->Next = NULL;
MakeEmpty( La );
InsertInitialElements( &i, La, 26 );
OutputAllElements( La );
Reversal( La );
OutputAllElements( La );
return 0;
}运行程序,链表被成功逆序。
这是逆序的一个一般性的方法,后续我会再写出其他实现方法。
标签:
原文地址:http://blog.csdn.net/oimchuan/article/details/44806083