LeetCode 707 设计链表[链表] HERODING的LeetCode之路
Posted HERODING23
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 707 设计链表[链表] HERODING的LeetCode之路相关的知识,希望对你有一定的参考价值。
解题思路:
一道非常基础的链表题,需要注意的地方在于节点的索引是从0开始的,首先定义一个head。不作为任何节点,只是作为链表的头部,get步骤就定义指针,循环到index的位置,返回该值即可,addhead和addtail都直接调用addIndex即可,在addIndex中,遍历到要添加的位置的前面,然后生成node,指向之前位置的节点即可,删除函数也是同样的操作,只不过要多一个pre指针,让pre指向cur的next,然后删除cur即可,代码如下:
class MyLinkedList
private:
int size;
ListNode* head;
public:
MyLinkedList()
// 初始化头节点
this->size = 0;
this->head = new ListNode(0);
int get(int index)
if(index < 0 || index >= size)
return -1;
ListNode* cur = head;
for(int i = 0; i <= index; i ++)
cur = cur->next;
return cur->val;
void addAtHead(int val)
return addAtIndex(0, val);
void addAtTail(int val)
return addAtIndex(size, val);
void addAtIndex(int index, int val)
if(index > size)
return;
index = max(index, 0);
size ++;
ListNode* cur = head;
ListNode* node = new ListNode(val);
for(int i = 0; i < index; i ++)
cur = cur->next;
node->next = cur->next;
cur->next = node;
void deleteAtIndex(int index)
if(index < 0 || index >= size)
return;
size --;
ListNode* cur = head;
ListNode* pre = head;
for(int i = 0; i <= index; i ++)
pre = cur;
cur = cur->next;
pre->next = cur->next;
delete cur;
;
/**
* 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);
*/
以上是关于LeetCode 707 设计链表[链表] HERODING的LeetCode之路的主要内容,如果未能解决你的问题,请参考以下文章