203. 移除链表元素
代码:
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
while(head!=NULL&&head->val==val)
{
ListNode* tem=head;
head=head->next;
delete tem;
}
ListNode* cur=head;
while(cur!=NULL&&cur->next!=NULL)
{
if(cur->next->val==val)
{
ListNode* tem=cur->next;
cur->next=cur->next->next;
delete tem;
}else
{
cur=cur->next;
}
}
return head;
}
};
707. 设计链表
class MyLinkedList {
public:
struct LinkedNode{
int val;
LinkedNode* next;
LinkedNode(int val):val(val),next(nullptr){};
};
MyLinkedList() {
_dummyNode=new LinkedNode(0);
_size=0;
}
int get(int index) {
if(index<0||index>_size-1)
{
return -1;
}
LinkedNode* cur=_dummyNode->next;
while(index--)
{
cur=cur->next;
}
return cur->val;
}
void addAtHead(int val) {
LinkedNode* newHead=new LinkedNode(val);
newHead->next=_dummyNode->next;
_dummyNode->next=newHead;
_size++;
}
void addAtTail(int val) {
LinkedNode* newNode=new LinkedNode(val);
LinkedNode* cur=_dummyNode;
while(cur->next!=nullptr)
{
cur=cur->next;
}
cur->next=newNode;
_size++;
}
void addAtIndex(int index, int val) {
if(index>_size)return ;
if(index<0)index=0;
LinkedNode* newNode=new LinkedNode(val);
LinkedNode* cur=_dummyNode;
while(index--)
{
cur=cur->next;
}
newNode->next=cur->next;
cur->next=newNode;
++_size;
}
void deleteAtIndex(int index) {
if(index<0||index>=_size)return ;
LinkedNode*cur=_dummyNode;
while(index--)
{
cur=cur->next;
}
LinkedNode* tem=cur->next;
cur->next=cur->next->next;
delete tem;
tem=nullptr;
_size++;
}
void printlLinkNode()
{
LinkedNode* cur=_dummyNode;
while(cur->next!=nullptr)
{
cout<< cur->next->val <<" ";
cur=cur->next;
}
cout << endl;
}
private:
int _size;
LinkedNode* _dummyNode;
};
206. 反转链表
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if(head==NULL)return NULL;
if(head->next==NULL) return head;
ListNode* last=reverseList(head->next);
head->next->next=head;
head->next=NULL;
return last;
}
};
双指针
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* tem;
ListNode* cur=head;;
ListNode* pre=NULL;
while(cur)
{
tem=cur->next;
cur->next=pre;
pre=cur;
cur=tem;
}
return pre;
}
};
总结:偷懒了,拉下来两天的进度,赶赶进度