标签:
在这篇文章 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