203. 移除链表元素
class Solution {
public:
ListNode* removeElements(ListNode* head, int val) {
while(head != nullptr && head->val == val){
head = head->next;
}
ListNode* pre = head;
ListNode* now = head;
while(now!=nullptr){
if(now->val == val){
pre->next = now->next;
}else{
pre = now;
}
now = now->next;
}
return head;
}
};
力扣题目链接
class Node{
public:
int val;
Node* next;
};
class MyLinkedList {
public:
Node* obj ;
MyLinkedList() {
obj = nullptr;
}
int get(int index) {
Node* pre = this->obj;
for(int i = 0;i < index;i++){
if(pre ==NULL)
return -1;
pre = pre->next;
}
if(pre ==nullptr){
return -1;
}
return pre->val;
}
void addAtHead(int val) {
Node* head = new Node{};
head->val = val;
head->next = obj;
obj = head;
}
void addAtTail(int val) {
Node* tail = new Node{};
tail->val = val;
Node* head = obj;
if(head == nullptr){
obj = tail;
return;
}
while(head->next != nullptr){
head = head->next;
}
head->next = tail;
}
void addAtIndex(int index, int val) {
if(index <= 0 ){
Node* tail = new Node{};
tail->val = val;
tail->next = obj;
obj = tail;
return;
}
if(obj == nullptr)
return ;
Node* tail = new Node{};
tail->val = val;
Node* head = obj;
for(int i = 0;i<index-1;i++){
head = head->next;
if(head == nullptr){
return;
}
}
tail->next = head->next;
head->next = tail;
}
void deleteAtIndex(int index) {
Node* head = obj;
Node* pre = obj;
if(head == nullptr){
return;
}
if(index == 0){
obj = obj->next;
}
for(int i = 0;i<index;i++){
pre = head;
head = head->next;
if(head == nullptr){
return;
}
}
pre->next = head->next;
}
};
力扣题目链接
*/
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* he = head;
if((head == nullptr )|| (head->next == nullptr))
return head;
ListNode* newhead = nullptr;
ListNode* nextp;
while(he!=nullptr){
if(he == head){
he = he->next;
newhead = head;
head->next = nullptr;
}
nextp = he->next;
he->next=newhead;
newhead = he;
he = nextp;
}
return newhead;
}
};