赞
踩
- class Solution {
- public:
- ListNode* removeElements(ListNode* head, int val) {
- ListNode *dummyHead = new ListNode(0);
- dummyHead->next = head;
- ListNode *cur = dummyHead;
- while (cur->next != nullptr) {
- if (cur->next->val == val) {
- ListNode *tmp = cur->next;
- cur->next = cur->next->next;
- delete tmp;
- }else {
- cur = cur->next;
- }
- }
- return dummyHead->next;
- }
- };
- class MyLinkedList {
- public:
- struct LinkedNode {
- int val;
- LinkedNode* next;
- LinkedNode(int val) : val(val), next(nullptr){}
- };
-
- MyLinkedList() {
- _dummyHead = new LinkedNode(0);
- _size = 0;
- }
-
- int get(int index) {
- if ((_size - 1) < index || index < 0) return -1; //先排除下标无效情况
- LinkedNode *cur = _dummyHead->next;
- while (index--) {
- cur = cur->next;
- }
- return cur->val;
- }
-
- void addAtHead(int val) {
- LinkedNode *newNode = new LinkedNode(val);
- newNode->next = _dummyHead->next;
- _dummyHead->next = newNode;
- ++_size;
- } // 这里不要忘记size++
-
- void addAtTail(int val) {
- LinkedNode *cur = _dummyHead;
- while (cur->next != nullptr) {
- cur = cur->next;
- }
- LinkedNode *newNode = new LinkedNode(val);
- cur->next = newNode;
- ++_size;
- }
-
- void addAtIndex(int index, int val) {
- if (index > _size) return;
- if(index < 0) index = 0;
- LinkedNode *cur = _dummyHead;
- while (index--) {
- cur = cur->next;
- }
- LinkedNode *newNode = new LinkedNode(val);
- newNode->next = cur->next;
- cur->next = newNode;
- _size++;
- }
-
- void deleteAtIndex(int index) {
- if (index >= _size || index < 0) {
- return;
- }
- LinkedNode *cur = _dummyHead;
- while (index--) {
- cur = cur->next;
- }
- LinkedNode* tmp = cur->next;
- cur->next = cur->next->next;
- delete tmp;
- tmp=nullptr;
- _size--;
- }
-
- void printLinkedList() {
- LinkedNode *cur = _dummyHead;
- while (cur->next != nullptr) {
- cout << cur->next->val << " ";
- cur = cur->next;
- }
- cout << endl;
- }
-
- private:
- int _size;
- LinkedNode *_dummyHead;
-
- };
- class Solution {
- public:
- ListNode* reverse(ListNode* pre, ListNode* cur) {
- if (cur == nullptr) return pre;
- ListNode* tmp = cur->next;
- cur->next = pre;
- return reverse(cur, tmp);
- }
- ListNode* reverseList(ListNode* head) {
- return reverse(nullptr, head);
- }
- };
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。