面试可能会面到,而且有的题目也需要单链表反转后,做得才比较机智,所以先自己搞一下单链表的反转
#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;
}