(自用)fds 链表

之后调整学习方式,选取感兴趣的题目以及练习内容进行学习具体数据结构有关知识点。

这一章学习链表。

具体内容有:

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

---------------------------------------------------------------------------------------------------------

总结和个人想法

  • 10
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值