单链表
链表的结构
| |
| typedef struct LNode |
| { |
| int val; |
| |
| |
| struct LNode *next; |
| |
| }LNode,*linkList; |
| |
| |
| |
| |
| |
| typedef struct data |
| { |
| int a; |
| char b; |
| string c; |
| boolean d; |
| ... |
| }data; |
创建链表
| |
| void createListFormer(linkList &L,int n) |
| { |
| linkList p; |
| L=new LNode; |
| L->next=NULL; |
| for(int i=0;i<n;i++) |
| { |
| p=new LNode; |
| cin>>p->val; |
| p->next=L->next; |
| L->next=p; |
| } |
| } |
| |
| void createListTail(linkList &l, int n) |
| { |
| l = new LNode; |
| l->next = NULL; |
| linkList r = l; |
| linkList p; |
| while (n--) |
| { |
| p = new LNode; |
| cin >> p->val; |
| p->next = NULL; |
| r->next = p; |
| r = p; |
| } |
| } |
链表翻转
| |
| |
| |
| |
| |
| |
| class Solution { |
| public: |
| ListNode* reverseList(ListNode* head) { |
| ListNode* prev = nullptr; |
| ListNode* curr = head; |
| while (curr) { |
| ListNode* next = curr->next; |
| curr->next = prev; |
| prev = curr; |
| curr = next; |
| } |
| return prev; |
| } |
| }; |
添加节点
| void addPoint(linkList &L) |
| { |
| int pos, data; |
| cin >> pos >> data; |
| |
| linkList p = L; |
| linkList pre; |
| linkList t = new LNode; |
| t->next = NULL; |
| t->val = data; |
| |
| |
| if (p->next == NULL || pos == p->val + 1) |
| { |
| while (p->next) |
| { |
| p = p->next; |
| } |
| p->next = t; |
| } |
| else |
| { |
| if (pos < 1 || pos > p->val + 1) |
| { |
| cout << "不存在该位置" << endl; |
| return; |
| } |
| while (pos--) |
| { |
| pre = p; |
| p = pre->next; |
| } |
| t->next = p; |
| pre->next = t; |
| } |
| } |
删除节点
| |
| void deletePoint(linkList &L) |
| { |
| int n; |
| cin >> n; |
| linkList p = L; |
| linkList pre; |
| if (p->next == NULL) |
| { |
| cout << "链表为空" << endl; |
| return; |
| } |
| if (n <= 0 || n > p->val) |
| { |
| cout << "不存在该位置" << endl; |
| return; |
| } |
| |
| if (n == p->val) |
| { |
| cout << "删除尾节点" << endl; |
| while (p->next->next) |
| { |
| p = p->next; |
| } |
| p->next = NULL; |
| } |
| else |
| { |
| while (n--) |
| { |
| pre = p; |
| p = pre->next; |
| } |
| pre->next = p->next; |
| } |
| } |
查找节点
| void findPoint(linkList L) |
| { |
| linkList p = L; |
| if (!L->next) |
| { |
| cout << "链表空" << endl; |
| return; |
| } |
| int n; |
| cin >> n; |
| if (n < 1 || n > p->val) |
| { |
| cout << "不存在该位置" << endl; |
| return; |
| } |
| while (n--) |
| { |
| p = p->next; |
| } |
| cout << p->val << endl; |
| } |
打印链表
| |
| void printList(linklist L) |
| { |
| linklist p; |
| p = L->next; |
| while (p) |
| { |
| cout << p->val << " "; |
| p = p->next; |
| } |
| } |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具