单链表反转

来源:互联网 发布:淘宝学校 编辑:程序博客网 时间:2024/04/29 07:01

面试可能会面到,而且有的题目也需要单链表反转后,做得才比较机智,所以先自己搞一下单链表的反转

#include<iostream>#include<vector>#include<algorithm>using namespace std;struct ListNode{    int val;    ListNode *next;};ListNode *head,*a,*b,*lst;ListNode* ReverseSinglyListNode(ListNode* head){    ListNode *tmp = NULL;    ListNode *p = NULL;    if (head == NULL)    {        return NULL;    }    tmp = head;    while (tmp->next != NULL)    {        p = tmp->next;        tmp->next = p->next;        p->next = head;        head = p;    }    return head;}int main(){    head = (ListNode*)malloc(sizeof(ListNode));    a = (ListNode*)malloc(sizeof(ListNode));    head->val = 1;    head->next = NULL;    a = head;    lst = head;    for(int i=0; i<4; i++)    {        b = (ListNode*)malloc(sizeof(ListNode));        b->val = i+2;        b->next = NULL;        a->next = b;        a = a->next;    }    head = ReverseSinglyListNode(head);    while(head != NULL)    {        cout<<head->val<<" ";        head = head->next;    }    return 0;}


0 0
原创粉丝点击