# 代码随想录算法训练营day02| leetcode203. 移除链表元素、707. 设计链表 206.反转链表

3 篇文章 0 订阅

#### 1.Leetcode203移除链表元素

/**
* 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) {
{
delete n2;
}
while(node != NULL && node->next != NULL)//其他情况
{
if(node->next->val == val)
{
ListNode *n2 = node->next;
node->next = n2->next;
delete n2;
}
else
{
node = node->next;
}
}
}

};

#### 2.707设计链表

get(index)：获取链表中第 index 个节点的值。如果索引无效，则返回-1。

addAtIndex(index,val)：在链表中的第 index 个节点之前添加值为 val  的节点。如果 index 等于链表的长度，则该节点将附加到链表的末尾。如果 index 大于链表长度，则不会插入节点。如果index小于0，则在头部插入节点。
deleteAtIndex(index)：如果索引 index 有效，则删除第 index 个节点。

class MyLinkedList {

public:

struct ListNode
{
int val;
ListNode * next;
ListNode(int x) : val(x),next(nullptr){};

};

int size1;

size1 = 0;
}

int get(int index) {

if (index > (size1 - 1) || index < 0) {
return -1;
}

while(index--)
{
cur = cur->next;

}
return cur->val;
}

ListNode * newNode = new ListNode(val);
size1++;

}

{   ListNode *newNode = new ListNode(val);
while(cur->next != NULL)
cur = cur->next;

cur->next = newNode;
size1++;
}

void addAtIndex(int index, int val) {

if(index > size1) return;
if(index < 0) index = 0;
ListNode *newNode = new ListNode(val);
while(index--)
{
cur = cur->next;
}
newNode->next = cur->next;
cur->next = newNode;
size1++;
}

void deleteAtIndex(int index) {

if (index >= size1 || index < 0) {
return;
}

while(index--)
{
cur = cur->next;
}
ListNode *tmp = cur->next;
cur->next = tmp->next;
delete tmp;
size1--;

}

while (cur->next != nullptr) {
cout << cur->next->val << " ";
cur = cur->next;
}
cout << endl;
}

};



#### 3.反转链表

class Solution {
public:
ListNode* reverse(ListNode* pre , ListNode* cur)
{
if(cur == NULL)
return pre;
ListNode* tmp = cur->next;
cur->next = pre;

return reverse(cur,tmp);
}

}
};

class Solution {
public:

ListNode* tmp;
ListNode* pre = NULL;
while(cur)
{
temp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};

• 0
点赞
• 0
收藏
觉得还不错? 一键收藏
• 打赏
• 0
评论
09-21 282
09-21 196
09-22 146
09-27 80
09-21 167
09-25 49
09-25 135
09-20 238
09-20 211
09-20 283

### “相关推荐”对你有帮助么？

• 非常没帮助
• 没帮助
• 一般
• 有帮助
• 非常有帮助

-GALI

¥1 ¥2 ¥4 ¥6 ¥10 ¥20

1.余额是钱包充值的虚拟货币，按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载，可以购买VIP、付费专栏及课程。