链表反转

来源:互联网 发布:ida pro for linux 编辑:程序博客网 时间:2024/04/29 08:43

数据结构如下:
typedef struct _Node 
{
    int data;
    struct _Node *next;
} Node;
完成函数 Node *Reverse(Node *head)head为不带头节点的链表的首部。

Node *Reverse(Node *head)
{
    Node *tmp     = NULL;                // 
缓冲变量
    Node *newHead = NULL;                // 反转后的新头节点
    
    if ( head==NULL ) return head;       // 
空链表的情况
    if ( head->next==NULL ) return head; // 
链表只有一个节点的情况
 
    while ( head )                       // 
判断有没有移动到最后
    {
        tmp=head->next;                  // 
临时记录下一个节点

        head->next = newHead;            // 
把原来链表中的节点放到新的链表的首部
        newHead = head;

        head = tmp;
    } // end of while

    return newHead;

// end of Reverse

 

原创粉丝点击