707. 设计链表

做题思路:

  1,就考察了链表的基础操作,题目要求什么就照做就好了

复制代码
 1 class MyLinkedList {
 2 public:
 3     struct LinkedList {   //甚至还先需要自己整一个链表的结构体,平时做题做惯了这里会忘先弄结构体了
 4         int val;
 5         LinkedList* next;
 6         LinkedList(int val) : val(val), next(nullptr) {}
 7     };
 8     MyLinkedList() {
 9 
10     }
11     LinkedList* fakeNode = new LinkedList(0);  //经典虚拟头节点,不知道为什么如果把这行放到上面的构造函数里面就识别不到,说未定义,真奇怪
12     int size = 0;  //为了检测 index 是否合法
13     int get(int index) {
14         if (index > (size - 1) || index < 0)return -1;
15         LinkedList* cur = fakeNode;
16         while (index--) {
17             cur = cur->next;
18         }
19         return cur->next->val;
20     }
21     
22     void addAtHead(int val) {
23         LinkedList* cur = new LinkedList(val);
24         cur->next = fakeNode->next;
25         fakeNode->next = cur;
26         size++;
27     }
28     
29     void addAtTail(int val) {
30         LinkedList* cur = fakeNode;
31         while (cur->next != nullptr) {
32             cur = cur->next;
33         }
34         LinkedList* newNode = new LinkedList(val);
35         cur->next = newNode;
36         size++;
37     }
38     
39     void addAtIndex(int index, int val) {
40         if (index > size)return ;
41         LinkedList* cur = fakeNode;
42         while (index--) {
43             cur = cur->next;
44         }
45         LinkedList* newNode = new LinkedList(val);
46         newNode->next = cur->next;
47         cur->next = newNode;
48         size++;
49     }
50     
51     void deleteAtIndex(int index) {
52         if (index >= size || index < 0)return ;
53         LinkedList* cur = fakeNode;
54         while (index--) {
55             cur = cur->next;
56         }
57         LinkedList* temp = cur->next;
58         cur->next = cur->next->next;
59         delete temp;
60         size--;
61     }
62 };
63 
64 /**
65  * Your MyLinkedList object will be instantiated and called as such:
66  * MyLinkedList* obj = new MyLinkedList();
67  * int param_1 = obj->get(index);
68  * obj->addAtHead(val);
69  * obj->addAtTail(val);
70  * obj->addAtIndex(index,val);
71  * obj->deleteAtIndex(index);
72  */
复制代码

 

posted @   北原春希  阅读(27)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示