|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
初学者,如果问题小白请勿怪
根据书上的定义(书是清华版的严蔚敏的数据结构c语言版),循环链表也是有头结点的,例如下面的含头结点和另外5个结点的循环链表:
0 1 2 3 4 5
这里我用0代表头结点。如果我理解的没有错,5这个结点的next是指向结点0的
如果求解约瑟夫问题,假设队伍长度不是41人是5个人,解决思想是从第一个元素(1)开始每隔2个后去掉一个元素,循环着来。
比如:
第一次报数1,2,3,所以去掉3;
第二次从4开始,那么应该是4,5, 1,也就是说5之后,循环到头部,指向1
但根据书上的定义,5之后是指向5头结点0的,这样的话。。。。虽然理论上每次循环到头结点可以多用个next,但感觉好麻烦。。。。
小甲鱼的视频上好像回避了这个问题,他建立的链表,第一个结点的data就是1,代表着第一个人,一共41个结点,第41个结点(人)的next指向结点1
整个链表是41个元素,而非(头结点+41)=42个元素。不仅约瑟夫问题,基本上视频里的所有的和循环单链表相关的问题都貌似没有头结点的存在————因为头结点的存在的确是使问题复杂化了
既然除此,为什么循环单链表要有一个头结点呢????
请高手大牛解惑
|
|