《Leetcode》链表-学习
发布日期:2022-03-18 05:04:17
浏览次数:5
分类:技术文章
本文共 3130 字,大约阅读时间需要 10 分钟。
链表的分类:
1.单链表
2.双链表
3.循环链表
链表的存储是根据操作系统的内存管理分配的。
C++设计链表
struct ListNode{ int val; ListNode* next; ListNode(int x): val(x),next(null){}};
/** * Definition for singly-linked list. * 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) {} * }; */class Solution {public: ListNode* removeElements(ListNode* head, int val) { //删除头节点 while (head != NULL && head->val == val){//NULL大写 ListNode* tmp = head;//负责清理内存空间 head = head->next; delete tmp; } //删除子节点 ListNode* cur = head;//传进来的是头节点位置,直接使用head会改变头节点位置 while (cur != NULL && cur->next != NULL){//避免空链表以及设置终止条件 if (cur->next->val == val) {//判断下一个节点就是要删除的 ListNode* tmp = cur->next; cur->next = cur->next->next; delete tmp; } else { cur = cur->next; } } return head; }};
class MyLinkedList {public: struct LinkedNode{//命名 int val; LinkedNode* next; LinkedNode(int x):val(x), next(nullptr){}//别忘了: }; MyLinkedList() {//初始化 dhead = new LinkedNode(0);//new一个对象 len = 0; } int get(int index) { if (index > (len - 1) || index < 0) { return -1; } LinkedNode* cur = dhead->next; while(index--){ // 如果--index 就会陷入死循环 cur = cur->next; } return cur->val; } void addAtHead(int val) { LinkedNode*newnode = new LinkedNode(val); newnode->next = dhead->next; dhead->next = newnode; len++; } void addAtTail(int val) { LinkedNode*newnode = new LinkedNode(val); LinkedNode*cur = dhead; while (cur->next != nullptr){ cur = cur->next; } cur->next = newnode; len++; } void addAtIndex(int index, int val) { if (len < index) { return; } LinkedNode*newnode = new LinkedNode(val); LinkedNode*cur = dhead; while (index--){ cur = cur->next; } newnode->next = cur->next; cur->next = newnode; len++; } void deleteAtIndex(int index) { if (len <= index || index < 0 ) { return; } LinkedNode*cur = dhead; while (index--){ cur = cur->next; } LinkedNode* tmp = cur->next; cur->next = cur->next->next; delete tmp; len--; } // 打印链表 void printLinkedList() { LinkedNode* cur = dhead; while (cur->next != nullptr) { cout << cur->next->val << " "; cur = cur->next; } cout << endl; }private://设定虚拟头节点 LinkedNode* dhead; int len;};/** * Your MyLinkedList object will be instantiated and called as such: * MyLinkedList* obj = new MyLinkedList(); * int param_1 = obj->get(index); * obj->addAtHead(val); * obj->addAtTail(val); * obj->addAtIndex(index,val); * obj->deleteAtIndex(index); */
转载地址:https://blog.csdn.net/qq_40911499/article/details/123477411 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
不错!
[***.144.177.141]2024年03月31日 12时27分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
文件服务器实现基本条件!
2019-04-26
文件服务器-活动目录的讨论
2019-04-26
文件服务器-活动目录的安装
2019-04-26
文件服务器-OU的概念!
2019-04-26
XP HOME 版本的 限制!
2019-04-26
VISTA版本!
2019-04-26
VMware GSX3.2 安装WINDOWS 2008!(1)
2019-04-26
VMware GSX3.2 安装WINDOWS 2008!(2)
2019-04-26
OE问题解决一例!
2019-04-26
利用LDIFDE,CSVDE 批量导出用户!
2019-04-26
ArcServer 无法正常启动,卸载IE7.0!
2019-04-26
为我加油吧-CTO 冲!
2019-04-26
C# 编写9*9乘法表!
2019-04-26
利用Azure媒体服务和WireCast定制个性化直播平台-Part1
2019-04-26
Exchange 2013 的会议室邮箱用户一直无法正常登陆。
2019-04-26
Windows Azure 故障转移模式及高可用个模式探讨!
2019-04-26
脱机地址列表无法生成的奇怪解决办法!
2019-04-26
Azure 配置高可用的准备系列工作-建立不同区域的存储账户和建立网络!
2019-04-26
了解一个通讯组里面成员的一个用户当前的邮箱空间达到80%配额的用户!
2019-04-26
苹果MAC 的 outlook的连接服务器在内网和外网名称变化!
2019-04-26