{"id":"4696e9f1-c996-4fa5-b658-a5e9c9a08377","name":"Add At Index In Linked List","description":"1. You are given a partially written LinkedList class.\r\n2. Here is a list of existing functions:\r\n 2.1 addLast - adds a new element with given value to the end of Linked List\r\n 2.2. display - Prints the elements of linked list from front to end in a single line. All \r\n elements are separated by space\r\n 2.3. size - Returns the number of elements in the linked list.\r\n 2.4. removeFirst - Removes the first element from Linked List. \r\n 2.5. getFirst - Returns the data of first element. \r\n 2.6. getLast - Returns the data of last element. \r\n 2.7. getAt - Returns the data of element available at the index passed. \r\n 2.8. addFirst - adds a new element with given value in front of linked list.\r\n3. You are required to complete the body of addAt function. This function should add the element at the index mentioned as parameter. If the idx is inappropriate print \"Invalid arguments\".\r\n4. Input and Output is managed for you.","inputFormat":"Input is managed for you","outputFormat":"Output is managed for you","constraints":"None","sampleCode":{"cpp":{"code":"#include <iostream>\nusing namespace std;\nclass node{\n public:\n int val;\n node* next;\n \n\n};\nclass LinkedList {\n public: node* head=nullptr;\n node* tail=nullptr;\n int size_=0;\n\nvoid insert_at_tail(int val){\n if(head==NULL){\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n head=newnode;\n\n }\n else{\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n node *temp = head;\n while(temp->next!=NULL){\n temp=temp->next;\n }\n temp->next = newnode;\n }\n\n}\n\nvoid print (){\n node *temp =head;\n if(head==NULL){\n cout << \"0\" << endl;\n return;\n }\n while(temp!=NULL){\n cout<<temp->val<<\" \";\n temp=temp->next;\n }\n cout << endl;\n}\nvoid deletion_at_head(){\n if(head==NULL) return;\n node *temp=head;\n head=head->next;\n delete temp;\n\n}\n\nint size(){\n int cnt=0;\n node* temp=head;\n while(temp!=NULL){\n temp=temp->next;\n cnt++;\n }\n return cnt;\n}\n\nvoid getFirst(){\n cout<<head->val<<endl;\n}\n\nvoid getLast(){\n node* temp=head;\n while(temp->next!=NULL){\n temp=temp->next;\n }\n cout << temp->val << endl;\n}\n\nnode* getAt(int p){\n int cnt=0;\n node* temp=head;\n while(cnt < p){\n cnt++;\n temp=temp->next;\n }\n cout << temp->val << endl;\n return temp;\n}\n\nvoid addFirst(int val){\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n if(head==NULL){\n head=newnode;\n }\n else{\n newnode ->next =head;\n head = newnode;\n }\n\n}\n\nvoid addAt(int pos,int data){\n //write your code here\n}\n\n};\nint main() {\n LinkedList l1;\n string s;\n cin >> s;\n while(s!=\"quit\"){\n if(s==\"addLast\"){\n int data;\n cin>> data;\n l1.insert_at_tail(data);\n }\n else if(s==\"addFirst\"){\n int data;\n cin>>data;\n l1.addFirst(data);\n }\n else if(s==\"getFirst\"){\n if(l1.head!=NULL){\n l1.getFirst();\n }else{\n cout << \"List is empty\" << endl;\n }\n }\n else if(s==\"getLast\"){\n if(l1.head!=NULL){\n l1.getLast();\n } \n else\n {\n cout<<\"List is empty\";\n }\n \n }\n else if(s==\"removeFirst\"){\n if(l1.head!=NULL){\n l1.deletion_at_head();\n }\n else{\n cout << \"List is empty\" << endl; \n }\n }\n else if(s==\"addAt\"){\n int val,i;\n cin>>i>>val;\n if(i>l1.size()){\n cout<<\"Invalid arguments\"<<endl;\n }\n else{\n l1.addAt(i,val);\n }\n }\n else if(s==\"getAt\"){\n if(l1.head!=NULL){\n int i;\n cin >> i; \n if(i>=l1.size()){\n cout << \"Invalid arguments\" << endl;\n }\n else{\n l1.getAt(i);\n }\n }\n else\n {\n cout<<\"List is empty\";\n }\n }\n else if(s==\"display\"){\n if(l1.head!=NULL){\n l1.print();\n }\n else{\n cout << endl;\n }\n }\n else if(s==\"size\"){\n if(l1.head!=NULL){\n cout << l1.size() << endl;\n }\n }\n cin>>s;\n }\n}"},"java":{"code":"import java.io.*;\r\nimport java.util.*;\r\n\r\npublic class Main {\r\n public static class Node {\r\n int data;\r\n Node next;\r\n }\r\n\r\n public static class LinkedList {\r\n Node head;\r\n Node tail;\r\n int size;\r\n\r\n void addLast(int val) {\r\n Node temp = new Node();\r\n temp.data = val;\r\n temp.next = null;\r\n\r\n if (size == 0) {\r\n head = tail = temp;\r\n } else {\r\n tail.next = temp;\r\n tail = temp;\r\n }\r\n\r\n size++;\r\n }\r\n\r\n public int size() {\r\n return size;\r\n }\r\n\r\n public void display() {\r\n for (Node temp = head; temp != null; temp = temp.next) {\r\n System.out.print(temp.data + \" \");\r\n }\r\n System.out.println();\r\n }\r\n\r\n public void removeFirst() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n } else if (size == 1) {\r\n head = tail = null;\r\n size = 0;\r\n } else {\r\n head = head.next;\r\n size--;\r\n }\r\n }\r\n\r\n public int getFirst() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else {\r\n return head.data;\r\n }\r\n }\r\n\r\n public int getLast() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else {\r\n return tail.data;\r\n }\r\n }\r\n\r\n public int getAt(int idx) {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else if (idx < 0 || idx >= size) {\r\n System.out.println(\"Invalid arguments\");\r\n return -1;\r\n } else {\r\n Node temp = head;\r\n for (int i = 0; i < idx; i++) {\r\n temp = temp.next;\r\n }\r\n return temp.data;\r\n }\r\n }\r\n\r\n public void addFirst(int val) {\r\n Node temp = new Node();\r\n temp.data = val;\r\n temp.next = head;\r\n head = temp;\r\n \r\n if(size == 0){\r\n tail = temp;\r\n }\r\n\r\n size++;\r\n }\r\n\r\n public void addAt(int idx, int val){\r\n // write your code here\r\n }\r\n }\r\n\r\n public static void main(String[] args) throws Exception {\r\n BufferedReader br = new BufferedReader(new InputStreamReader(System.in));\r\n LinkedList list = new LinkedList();\r\n\r\n String str = br.readLine();\r\n while (str.equals(\"quit\") == false) {\r\n if (str.startsWith(\"addLast\")) {\r\n int val = Integer.parseInt(str.split(\" \")[1]);\r\n list.addLast(val);\r\n } else if (str.startsWith(\"size\")) {\r\n System.out.println(list.size());\r\n } else if (str.startsWith(\"display\")) {\r\n list.display();\r\n } else if (str.startsWith(\"removeFirst\")) {\r\n list.removeFirst();\r\n } else if (str.startsWith(\"getFirst\")) {\r\n int val = list.getFirst();\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"getLast\")) {\r\n int val = list.getLast();\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"getAt\")) {\r\n int idx = Integer.parseInt(str.split(\" \")[1]);\r\n int val = list.getAt(idx);\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"addFirst\")) {\r\n int val = Integer.parseInt(str.split(\" \")[1]);\r\n list.addFirst(val);\r\n } else if (str.startsWith(\"addAt\")) {\r\n int idx = Integer.parseInt(str.split(\" \")[1]);\r\n int val = Integer.parseInt(str.split(\" \")[2]);\r\n list.addAt(idx, val);\r\n } \r\n str = br.readLine();\r\n }\r\n }\r\n}"},"python":{"code":"class Node:\n\n def __init__(self):\n self.data = 0\n self.next = None\n\n\nclass LinkedList:\n\n def __init__(self):\n self.head = None\n self.tail = None\n self.size = 0\n\n def addLast(self, val):\n temp = Node()\n temp.data = val\n temp.next = None\n\n if self.size == 0:\n self.head = self.tail = temp\n else:\n self.tail.next = temp\n self.tail = temp\n self.size += 1\n\n \n def display(self):\n temp = self.head\n while temp is not None:\n print(temp.data, end = \" \")\n temp = temp.next\n print()\n \n def removeFirst(self):\n if self.size == 0:\n print(\"List is empty\")\n elif self.size == 1:\n self.head = self.tail = None\n self.size = 0\n else:\n self.head = self.head.next\n self.size -= 1\n \n def getFirst(self):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n else:\n return self.head.data\n\n def getLast(self):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n else:\n return self.tail.data\n \n\n def getAt(self, idx):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n elif idx < 0 or idx >= self.size:\n print(\"Invalid arguments\")\n return -1\n else:\n temp = self.head\n i = 0\n while i < idx:\n temp = temp.next\n i += 1\n return temp.data\n \n def addFirst(self, val):\n temp = Node()\n temp.data = val\n temp.next = self.head\n self.head = temp\n\n if self.size == 0:\n self.tail = temp\n\n self.size += 1\n \n def addAt(self, idx, val):\n #write your code here\n\nl1 = LinkedList()\nwhile True:\n cmd=input().split(\" \")\n if \"addLast\" in cmd[0]:\n val=int(cmd[1])\n l1.addLast(val)\n \n elif \"getFirst\" in cmd[0]:\n ans=l1.getFirst()\n if(ans!=-1):\n print(ans)\n \n elif \"getLast\" in cmd[0]:\n ans=l1.getLast()\n if(ans!=-1):\n print(ans)\n \n elif \"getAt\" in cmd[0]:\n idx=int(cmd[1])\n ans=l1.getAt(idx)\n if(ans!=-1):\n print(ans)\n \n elif \"removeFirst\" in cmd[0]:\n l1.removeFirst()\n \n elif \"addFirst\" in cmd[0]:\n val=int(cmd[1])\n l1.addFirst(val)\n \n elif \"quit\" in cmd[0]:\n break\n \n elif \"display\" in cmd[0]:\n l1.display()\n \n elif \"size\" in cmd[0]:\n print(l1.size)\n \n elif \"addAt\" in cmd[0]:\n idx=int(cmd[1])\n val=int(cmd[2])\n l1.addAt(idx,val)"}},"points":10,"difficulty":"easy","sampleInput":"addFirst 10\r\ngetFirst\r\naddAt 0 20\r\ngetFirst\r\ngetLast\r\ndisplay\r\nsize\r\naddAt 2 40\r\ngetLast\r\naddAt 1 50\r\naddFirst 30\r\nremoveFirst\r\ngetFirst\r\nremoveFirst\r\nremoveFirst\r\naddAt 2 60\r\ndisplay\r\nsize\r\nremoveFirst\r\nremoveFirst\r\ngetFirst\r\nquit","sampleOutput":"10\r\n20\r\n10\r\n20 10 \r\n2\r\n40\r\n20\r\n10 40 60 \r\n3\r\n60","questionVideo":"https://www.youtube.com/embed/ObCDzE-eAgA","hints":[],"associated":[{"id":"1dbb3c61-fdba-435b-9cdd-dc72a28d03df","name":"What is the time complexity of this problem?9Q- Add at Index in Linked List)","slug":"what-is-the-time-complexity-of-this-problem-9q-add-at-index-in-linked-list","type":4},{"id":"32d12d56-01c4-4efe-b705-fcd82d8a9397","name":"What would be the invalid indexes, at which nodes cannot be added?(Q - Add at Index in Linked List)","slug":"what-would-be-the-invalid-indexes-at-which-nodes-cannot-be-added-q-add-at-index-in-linked-list","type":4},{"id":"b4c60a48-690c-47fc-8a19-99471a1798aa","name":"What is the correct way to reach the (i-1)-th node of a linked list?(Q- Add at Index in Linked List)","slug":"what-is-the-correct-way-to-reach-the-i-1-th-node-of-a-linked-list-q-add-at-index-in-linked-list","type":4},{"id":"b7e73f49-4819-4739-b407-ef14aa05b797","name":"Given the complete class with all its variables and helper functions in the code snippet, do we need handle the change in size of the linked list upon adding the node if not added at either first or last position, or will it be automatic?(Q- Add at Index ","slug":"given-the-complete-class-with-all-its-variables-and-helper-functions-in-the-code-snippet-do-we-need-handle-the-change-in-size-of-the-linked-list-upon-adding-the-node-if-not-added-at-either-first-or-last-position-or-will-it-be-automatic-q-add-at-index-in-l","type":4}],"solutionSeen":false,"tags":[],"meta":{"path":[{"id":0,"name":"home"},{"id":"0c54b191-7b99-4f2c-acb3-e7f2ec748b2a","name":"Data Structures and Algorithms","slug":"data-structures-and-algorithms","type":0},{"id":"91027ef1-2784-45bf-8143-cc6af4560105","name":"Linked Lists For Beginners","slug":"linked-lists-for-beginners","type":0},{"id":"07aaefef-9a9c-4f74-bd68-54a46c1958f2","name":"Add At Index In Linked List","slug":"add-at-index-in-linked-list","type":1}],"next":{"id":"5a62d604-d853-4185-9343-76ae0775af6d","name":"Add At Index In Linked List","type":3,"slug":"add-at-index-in-linked-list"},"prev":{"id":"eac96caa-744a-4b30-8f1c-cd1c9b3bd0c5","name":"Add First in a Linked List","type":3,"slug":"add-first-in-a-linked-list"}}}

Add At Index In Linked List

1. You are given a partially written LinkedList class. 2. Here is a list of existing functions: 2.1 addLast - adds a new element with given value to the end of Linked List 2.2. display - Prints the elements of linked list from front to end in a single line. All elements are separated by space 2.3. size - Returns the number of elements in the linked list. 2.4. removeFirst - Removes the first element from Linked List. 2.5. getFirst - Returns the data of first element. 2.6. getLast - Returns the data of last element. 2.7. getAt - Returns the data of element available at the index passed. 2.8. addFirst - adds a new element with given value in front of linked list. 3. You are required to complete the body of addAt function. This function should add the element at the index mentioned as parameter. If the idx is inappropriate print "Invalid arguments". 4. Input and Output is managed for you.

{"id":"4696e9f1-c996-4fa5-b658-a5e9c9a08377","name":"Add At Index In Linked List","description":"1. You are given a partially written LinkedList class.\r\n2. Here is a list of existing functions:\r\n 2.1 addLast - adds a new element with given value to the end of Linked List\r\n 2.2. display - Prints the elements of linked list from front to end in a single line. All \r\n elements are separated by space\r\n 2.3. size - Returns the number of elements in the linked list.\r\n 2.4. removeFirst - Removes the first element from Linked List. \r\n 2.5. getFirst - Returns the data of first element. \r\n 2.6. getLast - Returns the data of last element. \r\n 2.7. getAt - Returns the data of element available at the index passed. \r\n 2.8. addFirst - adds a new element with given value in front of linked list.\r\n3. You are required to complete the body of addAt function. This function should add the element at the index mentioned as parameter. If the idx is inappropriate print \"Invalid arguments\".\r\n4. Input and Output is managed for you.","inputFormat":"Input is managed for you","outputFormat":"Output is managed for you","constraints":"None","sampleCode":{"cpp":{"code":"#include <iostream>\nusing namespace std;\nclass node{\n public:\n int val;\n node* next;\n \n\n};\nclass LinkedList {\n public: node* head=nullptr;\n node* tail=nullptr;\n int size_=0;\n\nvoid insert_at_tail(int val){\n if(head==NULL){\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n head=newnode;\n\n }\n else{\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n node *temp = head;\n while(temp->next!=NULL){\n temp=temp->next;\n }\n temp->next = newnode;\n }\n\n}\n\nvoid print (){\n node *temp =head;\n if(head==NULL){\n cout << \"0\" << endl;\n return;\n }\n while(temp!=NULL){\n cout<<temp->val<<\" \";\n temp=temp->next;\n }\n cout << endl;\n}\nvoid deletion_at_head(){\n if(head==NULL) return;\n node *temp=head;\n head=head->next;\n delete temp;\n\n}\n\nint size(){\n int cnt=0;\n node* temp=head;\n while(temp!=NULL){\n temp=temp->next;\n cnt++;\n }\n return cnt;\n}\n\nvoid getFirst(){\n cout<<head->val<<endl;\n}\n\nvoid getLast(){\n node* temp=head;\n while(temp->next!=NULL){\n temp=temp->next;\n }\n cout << temp->val << endl;\n}\n\nnode* getAt(int p){\n int cnt=0;\n node* temp=head;\n while(cnt < p){\n cnt++;\n temp=temp->next;\n }\n cout << temp->val << endl;\n return temp;\n}\n\nvoid addFirst(int val){\n node *newnode = new node;\n newnode->val=val;\n newnode->next=NULL;\n if(head==NULL){\n head=newnode;\n }\n else{\n newnode ->next =head;\n head = newnode;\n }\n\n}\n\nvoid addAt(int pos,int data){\n //write your code here\n}\n\n};\nint main() {\n LinkedList l1;\n string s;\n cin >> s;\n while(s!=\"quit\"){\n if(s==\"addLast\"){\n int data;\n cin>> data;\n l1.insert_at_tail(data);\n }\n else if(s==\"addFirst\"){\n int data;\n cin>>data;\n l1.addFirst(data);\n }\n else if(s==\"getFirst\"){\n if(l1.head!=NULL){\n l1.getFirst();\n }else{\n cout << \"List is empty\" << endl;\n }\n }\n else if(s==\"getLast\"){\n if(l1.head!=NULL){\n l1.getLast();\n } \n else\n {\n cout<<\"List is empty\";\n }\n \n }\n else if(s==\"removeFirst\"){\n if(l1.head!=NULL){\n l1.deletion_at_head();\n }\n else{\n cout << \"List is empty\" << endl; \n }\n }\n else if(s==\"addAt\"){\n int val,i;\n cin>>i>>val;\n if(i>l1.size()){\n cout<<\"Invalid arguments\"<<endl;\n }\n else{\n l1.addAt(i,val);\n }\n }\n else if(s==\"getAt\"){\n if(l1.head!=NULL){\n int i;\n cin >> i; \n if(i>=l1.size()){\n cout << \"Invalid arguments\" << endl;\n }\n else{\n l1.getAt(i);\n }\n }\n else\n {\n cout<<\"List is empty\";\n }\n }\n else if(s==\"display\"){\n if(l1.head!=NULL){\n l1.print();\n }\n else{\n cout << endl;\n }\n }\n else if(s==\"size\"){\n if(l1.head!=NULL){\n cout << l1.size() << endl;\n }\n }\n cin>>s;\n }\n}"},"java":{"code":"import java.io.*;\r\nimport java.util.*;\r\n\r\npublic class Main {\r\n public static class Node {\r\n int data;\r\n Node next;\r\n }\r\n\r\n public static class LinkedList {\r\n Node head;\r\n Node tail;\r\n int size;\r\n\r\n void addLast(int val) {\r\n Node temp = new Node();\r\n temp.data = val;\r\n temp.next = null;\r\n\r\n if (size == 0) {\r\n head = tail = temp;\r\n } else {\r\n tail.next = temp;\r\n tail = temp;\r\n }\r\n\r\n size++;\r\n }\r\n\r\n public int size() {\r\n return size;\r\n }\r\n\r\n public void display() {\r\n for (Node temp = head; temp != null; temp = temp.next) {\r\n System.out.print(temp.data + \" \");\r\n }\r\n System.out.println();\r\n }\r\n\r\n public void removeFirst() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n } else if (size == 1) {\r\n head = tail = null;\r\n size = 0;\r\n } else {\r\n head = head.next;\r\n size--;\r\n }\r\n }\r\n\r\n public int getFirst() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else {\r\n return head.data;\r\n }\r\n }\r\n\r\n public int getLast() {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else {\r\n return tail.data;\r\n }\r\n }\r\n\r\n public int getAt(int idx) {\r\n if (size == 0) {\r\n System.out.println(\"List is empty\");\r\n return -1;\r\n } else if (idx < 0 || idx >= size) {\r\n System.out.println(\"Invalid arguments\");\r\n return -1;\r\n } else {\r\n Node temp = head;\r\n for (int i = 0; i < idx; i++) {\r\n temp = temp.next;\r\n }\r\n return temp.data;\r\n }\r\n }\r\n\r\n public void addFirst(int val) {\r\n Node temp = new Node();\r\n temp.data = val;\r\n temp.next = head;\r\n head = temp;\r\n \r\n if(size == 0){\r\n tail = temp;\r\n }\r\n\r\n size++;\r\n }\r\n\r\n public void addAt(int idx, int val){\r\n // write your code here\r\n }\r\n }\r\n\r\n public static void main(String[] args) throws Exception {\r\n BufferedReader br = new BufferedReader(new InputStreamReader(System.in));\r\n LinkedList list = new LinkedList();\r\n\r\n String str = br.readLine();\r\n while (str.equals(\"quit\") == false) {\r\n if (str.startsWith(\"addLast\")) {\r\n int val = Integer.parseInt(str.split(\" \")[1]);\r\n list.addLast(val);\r\n } else if (str.startsWith(\"size\")) {\r\n System.out.println(list.size());\r\n } else if (str.startsWith(\"display\")) {\r\n list.display();\r\n } else if (str.startsWith(\"removeFirst\")) {\r\n list.removeFirst();\r\n } else if (str.startsWith(\"getFirst\")) {\r\n int val = list.getFirst();\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"getLast\")) {\r\n int val = list.getLast();\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"getAt\")) {\r\n int idx = Integer.parseInt(str.split(\" \")[1]);\r\n int val = list.getAt(idx);\r\n if (val != -1) {\r\n System.out.println(val);\r\n }\r\n } else if (str.startsWith(\"addFirst\")) {\r\n int val = Integer.parseInt(str.split(\" \")[1]);\r\n list.addFirst(val);\r\n } else if (str.startsWith(\"addAt\")) {\r\n int idx = Integer.parseInt(str.split(\" \")[1]);\r\n int val = Integer.parseInt(str.split(\" \")[2]);\r\n list.addAt(idx, val);\r\n } \r\n str = br.readLine();\r\n }\r\n }\r\n}"},"python":{"code":"class Node:\n\n def __init__(self):\n self.data = 0\n self.next = None\n\n\nclass LinkedList:\n\n def __init__(self):\n self.head = None\n self.tail = None\n self.size = 0\n\n def addLast(self, val):\n temp = Node()\n temp.data = val\n temp.next = None\n\n if self.size == 0:\n self.head = self.tail = temp\n else:\n self.tail.next = temp\n self.tail = temp\n self.size += 1\n\n \n def display(self):\n temp = self.head\n while temp is not None:\n print(temp.data, end = \" \")\n temp = temp.next\n print()\n \n def removeFirst(self):\n if self.size == 0:\n print(\"List is empty\")\n elif self.size == 1:\n self.head = self.tail = None\n self.size = 0\n else:\n self.head = self.head.next\n self.size -= 1\n \n def getFirst(self):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n else:\n return self.head.data\n\n def getLast(self):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n else:\n return self.tail.data\n \n\n def getAt(self, idx):\n if self.size == 0:\n print(\"List is empty\")\n return -1\n elif idx < 0 or idx >= self.size:\n print(\"Invalid arguments\")\n return -1\n else:\n temp = self.head\n i = 0\n while i < idx:\n temp = temp.next\n i += 1\n return temp.data\n \n def addFirst(self, val):\n temp = Node()\n temp.data = val\n temp.next = self.head\n self.head = temp\n\n if self.size == 0:\n self.tail = temp\n\n self.size += 1\n \n def addAt(self, idx, val):\n #write your code here\n\nl1 = LinkedList()\nwhile True:\n cmd=input().split(\" \")\n if \"addLast\" in cmd[0]:\n val=int(cmd[1])\n l1.addLast(val)\n \n elif \"getFirst\" in cmd[0]:\n ans=l1.getFirst()\n if(ans!=-1):\n print(ans)\n \n elif \"getLast\" in cmd[0]:\n ans=l1.getLast()\n if(ans!=-1):\n print(ans)\n \n elif \"getAt\" in cmd[0]:\n idx=int(cmd[1])\n ans=l1.getAt(idx)\n if(ans!=-1):\n print(ans)\n \n elif \"removeFirst\" in cmd[0]:\n l1.removeFirst()\n \n elif \"addFirst\" in cmd[0]:\n val=int(cmd[1])\n l1.addFirst(val)\n \n elif \"quit\" in cmd[0]:\n break\n \n elif \"display\" in cmd[0]:\n l1.display()\n \n elif \"size\" in cmd[0]:\n print(l1.size)\n \n elif \"addAt\" in cmd[0]:\n idx=int(cmd[1])\n val=int(cmd[2])\n l1.addAt(idx,val)"}},"points":10,"difficulty":"easy","sampleInput":"addFirst 10\r\ngetFirst\r\naddAt 0 20\r\ngetFirst\r\ngetLast\r\ndisplay\r\nsize\r\naddAt 2 40\r\ngetLast\r\naddAt 1 50\r\naddFirst 30\r\nremoveFirst\r\ngetFirst\r\nremoveFirst\r\nremoveFirst\r\naddAt 2 60\r\ndisplay\r\nsize\r\nremoveFirst\r\nremoveFirst\r\ngetFirst\r\nquit","sampleOutput":"10\r\n20\r\n10\r\n20 10 \r\n2\r\n40\r\n20\r\n10 40 60 \r\n3\r\n60","questionVideo":"https://www.youtube.com/embed/ObCDzE-eAgA","hints":[],"associated":[{"id":"1dbb3c61-fdba-435b-9cdd-dc72a28d03df","name":"What is the time complexity of this problem?9Q- Add at Index in Linked List)","slug":"what-is-the-time-complexity-of-this-problem-9q-add-at-index-in-linked-list","type":4},{"id":"32d12d56-01c4-4efe-b705-fcd82d8a9397","name":"What would be the invalid indexes, at which nodes cannot be added?(Q - Add at Index in Linked List)","slug":"what-would-be-the-invalid-indexes-at-which-nodes-cannot-be-added-q-add-at-index-in-linked-list","type":4},{"id":"b4c60a48-690c-47fc-8a19-99471a1798aa","name":"What is the correct way to reach the (i-1)-th node of a linked list?(Q- Add at Index in Linked List)","slug":"what-is-the-correct-way-to-reach-the-i-1-th-node-of-a-linked-list-q-add-at-index-in-linked-list","type":4},{"id":"b7e73f49-4819-4739-b407-ef14aa05b797","name":"Given the complete class with all its variables and helper functions in the code snippet, do we need handle the change in size of the linked list upon adding the node if not added at either first or last position, or will it be automatic?(Q- Add at Index ","slug":"given-the-complete-class-with-all-its-variables-and-helper-functions-in-the-code-snippet-do-we-need-handle-the-change-in-size-of-the-linked-list-upon-adding-the-node-if-not-added-at-either-first-or-last-position-or-will-it-be-automatic-q-add-at-index-in-l","type":4}],"solutionSeen":false,"tags":[],"meta":{"path":[{"id":0,"name":"home"},{"id":"0c54b191-7b99-4f2c-acb3-e7f2ec748b2a","name":"Data Structures and Algorithms","slug":"data-structures-and-algorithms","type":0},{"id":"91027ef1-2784-45bf-8143-cc6af4560105","name":"Linked Lists For Beginners","slug":"linked-lists-for-beginners","type":0},{"id":"07aaefef-9a9c-4f74-bd68-54a46c1958f2","name":"Add At Index In Linked List","slug":"add-at-index-in-linked-list","type":1}],"next":{"id":"5a62d604-d853-4185-9343-76ae0775af6d","name":"Add At Index In Linked List","type":3,"slug":"add-at-index-in-linked-list"},"prev":{"id":"eac96caa-744a-4b30-8f1c-cd1c9b3bd0c5","name":"Add First in a Linked List","type":3,"slug":"add-first-in-a-linked-list"}}}
plane

Editor


Loading...

Add At Index In Linked List

easy

1. You are given a partially written LinkedList class. 2. Here is a list of existing functions: 2.1 addLast - adds a new element with given value to the end of Linked List 2.2. display - Prints the elements of linked list from front to end in a single line. All elements are separated by space 2.3. size - Returns the number of elements in the linked list. 2.4. removeFirst - Removes the first element from Linked List. 2.5. getFirst - Returns the data of first element. 2.6. getLast - Returns the data of last element. 2.7. getAt - Returns the data of element available at the index passed. 2.8. addFirst - adds a new element with given value in front of linked list. 3. You are required to complete the body of addAt function. This function should add the element at the index mentioned as parameter. If the idx is inappropriate print "Invalid arguments". 4. Input and Output is managed for you.

Constraints

None

Format

Input

Input is managed for you

Output

Output is managed for you

Example

Sample Input

addFirst 10 getFirst addAt 0 20 getFirst getLast display size addAt 2 40 getLast addAt 1 50 addFirst 30 removeFirst getFirst removeFirst removeFirst addAt 2 60 display size removeFirst removeFirst getFirst quit

Sample Output

10 20 10 20 10 2 40 20 10 40 60 3 60

Question Video

Discussions

Show Discussion

Related Resources

related resources

Turning Off Zen Mode