Day3
今天学习到了链表,第一题做得有点久,待会得复习一下链表相关的内容。 203.移除链表元素 题目链接:leetcode.cn/problems/re…
```ListNode* removeElements(ListNode* head, int val) {
ListNode* dummyhead = new ListNode(0);//虚拟头节点
dummyhead->next = head;
ListNode* cur = dummyhead;//当前头节点
while(cur->next != NULL) {//遍历链表,依次寻找和val值相等的节点,找到则删除,
if(cur->next->val ==val) {
ListNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
} else {
cur = cur->next;
}
}
head = dummyhead->next;
delete dummyhead;
return head;
}
707.设计链表 题目链接:707. 设计链表 - 力扣(LeetCode) 这题主要是熟悉对链表的操作。 代码如下: `` class MyLinkedList { public: //定义链表节点结构体 struct LinkedNode { int val; LinkedNode* next; LinkedNode(int val):val(val), next(nullptr){} }; //初始化链表 MyLinkedList() { dummyHead = new LinkedNode(0); //定义虚拟头节点,方便后续统一操作 size = 0; }
int get(int index) {
if (index < 0 || index > (size - 1)) {
return -1;
}
LinkedNode* cur = dummyHead->next;
while(index--) {
cur = cur->next;
}
return cur->val;
}
void addAtHead(int val) {
LinkedNode* newNode = new LinkedNode(val);
newNode->next = dummyHead->next;
dummyHead->next = newNode;
size++;
}
void addAtTail(int val) {
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = dummyHead;
while(cur->next != NULL) {
cur = cur->next;
}
cur->next = newNode;
size++;
}
void addAtIndex(int index, int val) {
LinkedNode* newNode = new LinkedNode(val);
LinkedNode* cur = dummyHead;
if(index < 0) index =0;
if(index > size) return;
while(index--) {
cur = cur->next;
}
newNode->next = cur->next;
cur->next = newNode;
size++;
}
void deleteAtIndex(int index) {
if(index < 0 || index >= size) {
return;
}
LinkedNode* cur = dummyHead;
while(index--) {
cur= cur->next;
}
LinkedNode* tmp = cur->next;
cur->next = cur->next->next;
delete tmp;
size--;
}
private: int size; LinkedNode* dummyHead; };
206.反转链表 题目链接:206. 反转链表 - 力扣(LeetCode) 这题第一眼还以为是要新开一个链表,仔细想想这也不是数组呀,这工作量太大了肯定不是最优解。原来只需要把指针反转就可以了,总体难度不难。 代码如下:
public:
ListNode* reverseList(ListNode* head) {
ListNode* tmp;
ListNode* cur = head;
ListNode* pre = NULL;
while(cur) {
tmp = cur->next;
cur->next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
};
`