ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
[TOC] > # 定义链表节点 使用ListNode表示链表节点; ```c 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) {} }; ``` > # 打印显示链表 ```c //打印链表 void displayList(ListNode *p){ while( p ){ cout<< p->val ; p = p->next; if(p) cout<<"->"; } cout<<endl; } ``` > # 链表倒叙 1->2->3 转 2->2->1 ```c //反转链表 ListNode *reverseList(ListNode *head){ ListNode * p1=head, *t , *rt=new ListNode(0); while(p1) t = p1->next , p1->next = rt->next, rt->next = p1, p1 = t; return rt->next; } ``` > # 连接两个链表 ```c //连接两个链表 ListNode* connectList(ListNode *a, ListNode * b) { if( !a || !b ) return a ? a : b; ListNode *p = a; while( p->next ) p = p->next; p->next = b; return a; } ```