最近笔试遇到了一个题,就是最基础的反转链表,可是我按照力扣的做法还有我看视频上的做都是编译错误,所以看了一眼编译,发现是没有定义ListNode的数据类型,原来是struct并没有定义,本来做题也没有怎么记这个,所以今天就按照acm模式随便写全了这个代码。具体功能相信大家都能看懂。
#include<iostream>
#include<vector>
using namespace std;
//定义数据类型
struct ListNode{
int val;
ListNode* next;
ListNode():val(0),next(nullptr){}
ListNode(int x):val(x),next(nullptr){}
ListNode(int x, ListNode * next):val(x), next(next){}
};
//反转链表
ListNode* reverse(ListNode* head){
ListNode* start = head, * prev = nullptr;
while(start){
ListNode* next = start->next;
start->next = prev;
prev = start;
start = next;
}
return prev;
}
int main(){
vector<int>p = {1,2,3,4,5};
int n = p.size();
ListNode *A = new ListNode();
ListNode *s , * r = A;
for(int i = 0; i < n; i++){
s = new ListNode();