链表逆序

来源:互联网 发布:电脑画画用什么软件 编辑:程序博客网 时间:2024/06/06 11:02

typedef struct Node { int data; struct Node *next; }List;


非递归:

List* ReverseList( List * head ) {if(head == NULL || head->next == NULL){return head;}List* p1 = head;List* p2 = head->next;p1->next =NULL;while(p2){List* p3 = p2;p2 = p2->next;p3->next = p1;p1 = p3;}return p1;}

递归:

List* rev( List * head ) { List *rHead; if( !head ) { return head; } else if( !head->next ) //只有一个结点 { return head; } else { rHead = rev( head->next ); head->next->next = head; head->next = NULL; return rHead; } }


0 0