之后调整学习方式,选取感兴趣的题目以及练习内容进行学习具体数据结构有关知识点。
这一章学习链表。
具体内容有:
zju mooc的三道链表题 三道pta练习题
b站up懒猫老师的约瑟夫环
代码随想录中的链表题
------------------------------------------------------------------------------------------------
约瑟夫环
这题是循环链表中非常经典的一题,m个猴子,然后每次从1报数到n,n的那个猴子就滚蛋,最后留下的猴子是大王。
//猴子大王 点名杀人
//循环链表
#include<iostream>
using namespace std;
struct node {
int data;
node* next;
};
int main() {
int m, n;
cin >> m >> n;
if (n == 0 || m == 0) return NULL;
node* head = new node, *p;
p = head;
node* s = new node;
s->data = 1;
p->next = s;
p = p->next;
for (int i = 2; i < m+1; i++) {
node* s = new node;
s->data = i;
p->next = s;
p = p->next;
}
p->next = head->next;
node* pre = p;
node*cur= head->next; //定义pre 和 cur;
while (cur->next != cur) {
for (int i = 0; i < n-1; i++) {
cur = cur->next;
pre = pre->next;
}
node* temp = cur;
pre->next = cur->next;
delete temp;
cur = pre->next;
}
cout << cur->data << endl;
return 0;
}
这里用一个head头节点来表示整个链表。那么什么时候循环结束呢,就是当cur的下一个是自己的时候。
----------------------------------------------------------------------------------------------------
代码随想录链表
1.移除链表元素
2.翻转链表
3.两两交换链表节点
4.链表相交
5.环形链表2
---------------------------------------------------------------------------------------------------------
总结和个人想法