Linked List - Good Like - Reversal

来源:互联网 发布:剑网3数据互通 编辑:程序博客网 时间:2024/06/08 09:55

在这篇文章 Linked List 中学习了如何写出单链表的基本操作。

现在来写一个程序进行单链表的逆序操作:

voidReversal( 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 */intmain(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;}
运行程序,链表被成功逆序。


这是逆序的一个一般性的方法,后续我会再写出其他实现方法。

1 0