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  */
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值