<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      設計鏈表

      struct DLinkListNode{
          int val;
          DLinkListNode *prev, *next;
          DLinkListNode(int _val) : val(_val), prev(nullptr), next(nullptr){}
      };
      class MyLinkedList {
          private:
              int size;
              DLinkListNode *head;
              DLinkListNode *tail;
      public:
          MyLinkedList() {
              this->size = 0;
              this->head = new DLinkListNode(0);
              this->tail = new DLinkListNode(0);
              head->next = tail;
              tail->prev = head;
          }
          int get(int index) {
              if (index < 0 || index >= size){
                  return -1;
              } 
              DLinkListNode *curr;
              if(index + 1 < size - index){ //在鏈表左邊
                  curr = head;
                  for(int i = 0; i <= index; ++i){
                      curr = curr->next;
                  }
              }else{ //在鏈表右邊
                  curr = tail;
                  for(int i = 0; i < size - index; i++){
                      curr = curr->prev;
                  }
              }
              return curr->val;
          }
          void addAtHead(int val) {
              addAtIndex(0, val);
          }
          
          void addAtTail(int val) {
              addAtIndex(size, val);
          }
          
          void addAtIndex(int index, int val) {
              if(index > size){
                  return;
              }
              index = max(0, index);
              DLinkListNode *pred, *succ;
              if(index < size - index){ //插在左邊
                  pred = head;
                  for(int i = 0; i <index; ++i){
                      pred = pred->next;
                  }
                  succ = pred->next;
              }else{
                  succ = tail;
                  for(int i = 0; i < size - index; ++i){
                      succ = succ ->prev;
                  }
                  pred = succ -> prev;
              }
              size++;
              DLinkListNode *toAdd = new DLinkListNode(val);
              toAdd->prev = pred;
              toAdd->next = succ;
              pred->next = toAdd;
              succ->prev =toAdd;
          }
          
          void deleteAtIndex(int index) {
              if(index < 0 || index >= size){
                  return;
              }
              DLinkListNode *pred, *succ;
              if(index < size - index){
                  pred = head;
                  for(int i = 0; i < index; ++i){
                      pred = pred->next;
                  }
                  succ = pred->next->next;  //因為是帶頭節點的鏈表所以刪除pred下一個才是index
              }else{
                  succ = tail;
                  for(int i = 0; i < size - index - 1; ++i){
                      succ = succ->prev;
                  }
                  pred = succ->prev->prev; //同樣帶了尾節點刪除元素為succ的上一個
              }
              size--;
              DLinkListNode *p = pred->next;
              pred->next = succ;
              succ->prev =pred;
              delete p;
          }
      };
      
      /**
       * 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);
       */
      
      class MyLinkedList {
          int size;
          ListNode head;
          ListNode tail;
      
          public MyLinkedList() {
              size = 0;
              head = new ListNode(0);
              tail = new ListNode(0);
              head.next = tail;
              tail.prev = head;
          }
      
          public int get(int index) {
              if (index < 0 || index >= size) {
                  return -1;
              }
              ListNode curr;
              if (index + 1 < size - index) {
                  curr = head;
                  for (int i = 0; i <= index; i++) {
                      curr = curr.next;
                  }
              } else {
                  curr = tail;
                  for (int i = 0; i < size - index; i++) {
                      curr = curr.prev;
                  }
              }
              return curr.val;
          }
      
          public void addAtHead(int val) {
              addAtIndex(0, val);
          }
      
          public void addAtTail(int val) {
              addAtIndex(size, val);
          }
      
          public void addAtIndex(int index, int val) {
              if (index > size) {
                  return;
              }
              index = Math.max(0, index);
              ListNode pred, succ;
              if (index < size - index) {
                  pred = head;
                  for (int i = 0; i < index; i++) {
                      pred = pred.next;
                  }
                  succ = pred.next;
              } else {
                  succ = tail;
                  for (int i = 0; i < size - index; i++) {
                      succ = succ.prev;
                  }
                  pred = succ.prev;
              }
              size++;
              ListNode toAdd = new ListNode(val);
              toAdd.prev = pred;
              toAdd.next = succ;
              pred.next = toAdd;
              succ.prev = toAdd;
          }
      
          public void deleteAtIndex(int index) {
              if (index < 0 || index >= size) {
                  return;
              }
              ListNode pred, succ;
              if (index < size - index) {
                  pred = head;
                  for (int i = 0; i < index; i++) {
                      pred = pred.next;
                  }
                  succ = pred.next.next;
              } else {
                  succ = tail;
                  for (int i = 0; i < size - index - 1; i++) {
                      succ = succ.prev;
                  }
                  pred = succ.prev.prev;
              }
              size--;
              pred.next = succ;
              succ.prev = pred;
          }
      }
      
      class ListNode {
          int val;
          ListNode next;
          ListNode prev;
      
          public ListNode(int val) {
              this.val = val;
          }
      }
      
      class LsitNode:
          def __init__(self, _val):
              self.val = _val
              self.prev = None
              self.next = None
      class MyLinkedList(object):
      
          def __init__(self):
              self.size = 0
              self.head = LsitNode(0)
              self.tail = LsitNode(0)
              self.head.next = self.tail
              self.tail.prev = self.head
      
          def get(self, index):
              if index < 0 or index >= self.size:
                  return -1;
              if index + 1 < self.size - index:
                  curr = self.head
                  for __ in range(index + 1):
                      curr = curr.next
              else:
                  curr = self.tail
                  for _ in range(self.size - index):
                      curr = curr.prev
              return curr.val
                      
      
          def addAtHead(self, val):
              """
              :type val: int
              :rtype: None
              """
              self.addAtIndex(0, val)
              
      
          def addAtTail(self, val):
              """
              :type val: int
              :rtype: None
              """
              self.addAtIndex(self.size, val)
      
          def addAtIndex(self, index, val):
              """
              :type index: int
              :type val: int
              :rtype: None
              """
              if index > self.size:
                  return
              index = max(0, index)
              if index < self.size - index:
                  pred = self.head
                  for _ in range(index):
                      pred = pred.next
                  succ = pred.next
              else:
                  succ = self.tail
                  for _ in range(self.size - index):
                      succ = succ.prev
                  pred = succ.prev
              self.size += 1
              to_add = ListNode(val)
              to_add.prev = pred
              to_add.next = succ
              pred.next = to_add
              succ.prev = to_add
      
          def deleteAtIndex(self, index):
              """
              :type index: int
              :rtype: None
              """
              if index < 0 or index >= self.size:
                  return
              if index < self.size - index:
                  pred = self.head
                  for _ in range(index):
                      pred = pred.next
                  succ = pred.next.next
              else:
                  succ = self.tail
                  for _ in range(self.size - index - 1):
                      succ = succ.prev
                  pred = succ.prev.prev
              self.size -= 1
              pred.next = succ
              succ.prev = pred
      
              
      
      # Your MyLinkedList object will be instantiated and called as such:
      # obj = MyLinkedList()
      # param_1 = obj.get(index)
      # obj.addAtHead(val)
      # obj.addAtTail(val)
      # obj.addAtIndex(index,val)
      # obj.deleteAtIndex(index)
      
      posted on 2025-02-14 11:53  愛吐水的小火龍  閱讀(9)  評論(0)    收藏  舉報

      主站蜘蛛池模板: 99精品高清在线播放| 幻女free性俄罗斯毛片| 亚洲乱码国产乱码精品精| 精品2020婷婷激情五月| 无码人妻丰满熟妇啪啪欧美| 亚洲三级香港三级久久| 高清国产一区二区无遮挡| 最新亚洲av日韩av二区| 国产无套精品一区二区| 97人妻精品一区二区三区| 三级黄色片一区二区三区| 国产一码二码三码区别| 亚洲午夜无码久久久久蜜臀av| 精品国产乱码久久久久久影片| 亚洲精品麻豆一二三区| 鄢陵县| 精品亚洲男人一区二区三区| 日韩av中文字幕有码| 国产成人亚洲综合图区| 精品人妻伦一二二区久久| 久久精品人人做人人爽97| 亚洲aⅴ男人的天堂在线观看| 亚洲熟妇少妇任你躁在线观看无码| 国产av一区二区亚洲精品| 99精品国产综合久久久久五月天 | 亚洲综合日韩av在线| 伊人久久大香线蕉av一区二区| 乱人伦中文字幕成人网站在线| 国产精品黄色精品黄色大片| 亚洲精品成人一二三专区| 国产午夜精品理论大片| 在线精品国精品国产不卡| 日本人妻巨大乳挤奶水免费 | 欧美日韩综合网| 久热伊人精品国产中文| 国内精品久久久久影院日本| 国产成人午夜精品影院| 国产91午夜福利精品| 午夜福利国产精品视频| 日产无人区一线二码三码2021| 日本亚洲一区二区精品|