Untitled
unknown
plain_text
a year ago
2.6 kB
9
Indexable
struct LinkedList {
int val;
LinkedList* next;
LinkedList() {
this->val = 0;
this->next = nullptr;
}
LinkedList(int val) {
this->val = val;
this->next = nullptr;
}
};
class MyLinkedList {
public:
LinkedList* head;
MyLinkedList() { head = nullptr; }
int get(int index) {
LinkedList* curr = head;
while (curr && index--) {
curr = curr->next;
cout << "9";
}
cout << endl;
// print(curr);
if (index >= 0){
cout << " ii " << index;
return -1;
}
print(head);
cout << curr->val;
return curr->val;
}
void addAtHead(int val) {
LinkedList* curr = new LinkedList(val);
if (!head) {
head = curr;
return;
}
curr->next = head;
head = curr;
}
void addAtTail(int val) {
LinkedList* curr = head;
while (curr && curr->next) {
curr = curr->next;
}
LinkedList* newNode = new LinkedList(val);
if (!curr) {
head = newNode;
return;
}
curr->next = newNode;
}
void addAtIndex(int index, int val) {
if (!index) {
addAtHead(val);
return;
}
LinkedList* curr = head;
while (curr && curr->next && --index) {
curr = curr->next;
}
cout << " iii " << index ;
if (index >= 0) return;
LinkedList* newNode = new LinkedList(val);
if (!curr) {
head = newNode;
return;
}
LinkedList* temp = curr->next;
curr->next = newNode;
newNode->next = temp;
cout << "jhgjhgjg";
print(head);
}
void deleteAtIndex(int index) {
if (!head) return;
if (!index) {
head = head->next;
return;
}
LinkedList* curr = head;
while (curr->next && index--) {
curr = curr->next;
}
if (index >= 0) return;
curr->next = curr->next->next;
}
void print(LinkedList* head) {
while (head) {
cout << head->val << " ";
head = head->next;
}
cout << endl;
}
};
/**
* 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);
*/vEditor is loading...
Leave a Comment