Josephus问题:设有n个人围坐在一个圆桌周围,现从第s个人开始报数,数到第m的人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列。如此反复直到所有的人全部出列为止。 思路:构建一个没有头结点的循环链表,实现自己的删除函数,数到第几个结点就把这个结点从链表中删除,然后重新数。 ...
分类:
其他好文 时间:
2015-04-11 17:31:51
阅读次数:
149
有N个人围一圈依次报数,数到3的倍数的人出列,问当只剩一个人时他原来的位子在哪里?
/*约瑟夫环问题---单向循环链表实现*/
/**********************************/
/**********Date:2015.3.11*********/
/*********author:xiaozhi xiong***/
/**************************...
分类:
其他好文 时间:
2015-03-11 19:43:55
阅读次数:
128
本文双链表介绍部分参考自博文数组、单链表和双链表介绍 以及 双向链表的C/C++/Java实现。 1 双链表介绍 双向链表(双链表)是链表的一种。和单链表一样,双链表也是由节点组成,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便...
分类:
编程语言 时间:
2014-11-02 19:38:56
阅读次数:
441
#include //单向循环链表实现与遍历typedef struct Node { int data; struct Node *next;} Node;int main (){Node n1 = {1, NULL}; Node n2 = {2, NULL}; Node n3 = {3, NUL...
分类:
其他好文 时间:
2014-09-24 23:50:07
阅读次数:
277
给定一个循环链表,实现一个算法返回这个环的开始结点。
定义:
循环链表:链表中一个结点的指针指向先前已经出现的结点,导致链表中出现环。
例子:
输入:A -> B -> C -> D -> E -> C [结点C在之前已经出现过]
输出:结点C
可以用一个map 就解决问题了。
下面是编程之美上一种奇特的解法:快慢指针解法。
代码:...
分类:
其他好文 时间:
2014-08-22 21:16:09
阅读次数:
296
ArrayList,LinkedList,Vestor这三个类都实现了java.util.List接口,但它们有各自不同的特性,主要如下:
ArrayList:底层用数组实现的List 特点:查询效率高,增删效率低 轻量级 线程不安全 LinkedList:底层用双向循环链表实现的List
特点:查...
分类:
其他好文 时间:
2014-06-16 10:07:45
阅读次数:
291
约瑟夫问题,循环链表实现
问题描述:
n 个人围成一个圆圈, 首先第 1 个人从 1 开始一个人一个人的顺时针报数,报到第 报到第 m 个人, 令其出列。 然后再从下一 个人开始从 1 顺时针报数 , 报到第 m 个人, 再令其出列,如此下去 , 求出列顺序。...
分类:
其他好文 时间:
2014-06-08 15:02:43
阅读次数:
188
0.等待队列
在Linux内核中等待队列有很多用途,可用于中断处理、进程同步及定时。我们在这里只说,进程经常必须等待某些事件的发生。等待队列实现了在事件上的条件等待: 希望等待特定事件的进程把自己放进合适的等待队列,并放弃控制全。因此,等待队列表示一组睡眠的进程,当某一条件为真时,由内核唤醒它们。
等待队列由循环链表实现,由等待队列头(wait_queue_head_t)和等待队列...
分类:
其他好文 时间:
2014-05-13 16:03:28
阅读次数:
370