码迷,mamicode.com
首页 > 其他好文 > 详细

单链表 - 神一般的逆序

时间:2015-04-01 15:28:04      阅读:140      评论:0      收藏:0      [点我收藏+]

标签:

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!