博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#Leetcode# 707. Design Linked List
阅读量:4837 次
发布时间:2019-06-11

本文共 4162 字,大约阅读时间需要 13 分钟。

 

Design your implementation of the linked list. You can choose to use the singly linked list or the doubly linked list. A node in a singly linked list should have two attributes: val and nextval is the value of the current node, and next is a pointer/reference to the next node. If you want to use the doubly linked list, you will need one more attribute prev to indicate the previous node in the linked list. Assume all nodes in the linked list are 0-indexed.

Implement these functions in your linked list class:

  • get(index) : Get the value of the index-th node in the linked list. If the index is invalid, return -1.
  • addAtHead(val) : Add a node of value val before the first element of the linked list. After the insertion, the new node will be the first node of the linked list.
  • addAtTail(val) : Append a node of value val to the last element of the linked list.
  • addAtIndex(index, val) : Add a node of value val before the index-th node in the linked list. If index equals to the length of linked list, the node will be appended to the end of linked list. If index is greater than the length, the node will not be inserted.
  • deleteAtIndex(index) : Delete the index-th node in the linked list, if the index is valid.

Example:

MyLinkedList linkedList = new MyLinkedList();linkedList.addAtHead(1);linkedList.addAtTail(3);linkedList.addAtIndex(1, 2);  // linked list becomes 1->2->3linkedList.get(1);            // returns 2linkedList.deleteAtIndex(1);  // now the linked list is 1->3linkedList.get(1);            // returns 3

Note:

  • All values will be in the range of [1, 1000].
  • The number of operations will be in the range of [1, 1000].
  • Please do not use the built-in LinkedList library.

代码:

class MyLinkedList {public:    /** Initialize your data structure here. */    MyLinkedList() {        head = NULL;        sz = 0;    }        /** Get the value of the index-th node in the linked list. If the index is invalid, return -1. */    int get(int index) {        if(index < 0 || index >= sz) return -1;        ListNode *cur = head;        for(int i = 0; i < index; i ++) cur = cur -> next;        return cur -> val;    }        /** Add a node of value val before the first element of the linked list. After the insertion, the new node will be the first node of the linked list. */    void addAtHead(int val) {        ListNode *pre = new ListNode(val, head);        head = pre;        sz ++;    }        /** Append a node of value val to the last element of the linked list. */    void addAtTail(int val) {        ListNode *pre = head;        while(pre -> next) pre = pre -> next;        pre -> next = new ListNode(val, NULL);        sz ++;    }        /** Add a node of value val before the index-th node in the linked list. If index equals to the length of linked list, the node will be appended to the end of linked list. If index is greater than the length, the node will not be inserted. */    void addAtIndex(int index, int val) {        if(index < 0 || index > sz) return;        if(index == 0) {            addAtHead(val);            return;        }        ListNode *pre = head;        for(int i = 0; i < index - 1; i ++) pre = pre -> next;        ListNode *cur = new ListNode(val, pre -> next);        pre -> next = cur;        sz ++;    }        /** Delete the index-th node in the linked list, if the index is valid. */    void deleteAtIndex(int index) {        if(index < 0 || index >= sz) return;        if(index == 0) {            head = head -> next;            sz --;            return;        }                ListNode *pre = head;        for(int i = 0; i 
next; pre -> next = pre -> next -> next; sz --; }private: struct ListNode { int val; ListNode *next; ListNode(int x, ListNode *n): val(x),next(n) {} }; ListNode *head, *tail; int sz;};/** * 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); */

  这个写完之后仿佛已经搞清楚了链表 但愿不是错觉叭

温泉居 FH 还没粗来

转载于:https://www.cnblogs.com/zlrrrr/p/10296375.html

你可能感兴趣的文章
函数中对象名的传参形式
查看>>
PHP基础知识
查看>>
Codeforces Round #480 (Div. 2)
查看>>
codeforce 1059E Split the Tree
查看>>
【读书笔记-数据挖掘概念与技术】数据预处理
查看>>
进度条第八周
查看>>
简单BFS POJ 3126 Prime Path
查看>>
运行第一个OpenCV程序
查看>>
算法笔记_003:矩阵相乘问题【分治法】
查看>>
算法笔记_017:递归执行顺序的探讨(Java)
查看>>
牛顿法与拟牛顿法学习笔记(四)BFGS 算法
查看>>
ninth week (1)
查看>>
C float与char数组 互转
查看>>
异步线程中开启定时器
查看>>
正则表达式与unicode
查看>>
abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一)
查看>>
div水平居中与垂直居中的方法【摘自美浩工作室官方博客 】
查看>>
UITableView 滚动条
查看>>
Android已有的原生Camera框架中加入自己的API的实现方案。
查看>>
Learn python the ninth day
查看>>