使用C#链表简单实现的约瑟夫环
前几天随便用C#写了一个约瑟夫环
谈不上效率 因为使用的是C#自带的双向链表
运行结果如下:
![](/images/cnblogs_com/rthy/a.GIF)
谈不上效率 因为使用的是C#自带的双向链表
1
//count 代表总数
//order 代表报号出列的号码
//begId 代表起始 位置
class Program
2
{
3
static void Main(string[] args)
4
{
5
Console.WriteLine("Please Enter Total:");
6
int count = int.Parse(Console.ReadLine());
7![](/Images/OutliningIndicators/InBlock.gif)
8
LinkedList<Person> list = InitList(count);
9![](/Images/OutliningIndicators/InBlock.gif)
10
Console.WriteLine("Please Enter Index:");
11
int order = int.Parse(Console.ReadLine());
12![](/Images/OutliningIndicators/InBlock.gif)
13
Console.WriteLine("Please Enter Start Index:");
14
int begid = int.Parse(Console.ReadLine());
15![](/Images/OutliningIndicators/InBlock.gif)
16![](/Images/OutliningIndicators/InBlock.gif)
17
LinkedListNode<Person> first = list.First;
18
for (int i = 0; i < begid - 1; i++)
19
first = (first == list.Last ? list.First : first.Next);
20![](/Images/OutliningIndicators/InBlock.gif)
21
LinkedListNode<Person> start;
22
do
23
{
24
for (int i = 0; i < order - 1; i++)
25
first = (first == list.Last ? list.First : first.Next);
26![](/Images/OutliningIndicators/InBlock.gif)
27
start = first;
28![](/Images/OutliningIndicators/InBlock.gif)
29
first = (first == list.Last ? list.First : first.Next);
30
31
Console.WriteLine(start.Value.Id);
32
list.Remove(start);
33
}
34
while (list.Count >= 1);
35![](/Images/OutliningIndicators/InBlock.gif)
36
Console.ReadLine();
37
}
38![](/Images/OutliningIndicators/InBlock.gif)
39
static LinkedList<Person> InitList(int count)
40
{
41
LinkedList<Person> list = new LinkedList<Person>();
42
for (int i = 1; i <= count; i++)
43
{
44
Person p = new Person();
45
p.Id = i;
46
p.Name = "Person-" + i.ToString();
47
list.AddLast(p);
48
}
49
return list;
50
}
51
}
52![](/Images/OutliningIndicators/None.gif)
53
class Person
54
{
55
private int _id;
56![](/Images/OutliningIndicators/InBlock.gif)
57
public int Id
58
{
59
get { return _id; }
60
set { _id = value; }
61
}
62
private string _name;
63![](/Images/OutliningIndicators/InBlock.gif)
64
public string Name
65
{
66
get { return _name; }
67
set { _name = value; }
68
}
69
}
70
![](/Images/OutliningIndicators/None.gif)
//order 代表报号出列的号码
//begId 代表起始 位置
class Program
2
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
3
![](/Images/OutliningIndicators/InBlock.gif)
4
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/InBlock.gif)
7
![](/Images/OutliningIndicators/InBlock.gif)
8
![](/Images/OutliningIndicators/InBlock.gif)
9
![](/Images/OutliningIndicators/InBlock.gif)
10
![](/Images/OutliningIndicators/InBlock.gif)
11
![](/Images/OutliningIndicators/InBlock.gif)
12
![](/Images/OutliningIndicators/InBlock.gif)
13
![](/Images/OutliningIndicators/InBlock.gif)
14
![](/Images/OutliningIndicators/InBlock.gif)
15
![](/Images/OutliningIndicators/InBlock.gif)
16
![](/Images/OutliningIndicators/InBlock.gif)
17
![](/Images/OutliningIndicators/InBlock.gif)
18
![](/Images/OutliningIndicators/InBlock.gif)
19
![](/Images/OutliningIndicators/InBlock.gif)
20
![](/Images/OutliningIndicators/InBlock.gif)
21
![](/Images/OutliningIndicators/InBlock.gif)
22
![](/Images/OutliningIndicators/InBlock.gif)
23
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
24
![](/Images/OutliningIndicators/InBlock.gif)
25
![](/Images/OutliningIndicators/InBlock.gif)
26
![](/Images/OutliningIndicators/InBlock.gif)
27
![](/Images/OutliningIndicators/InBlock.gif)
28
![](/Images/OutliningIndicators/InBlock.gif)
29
![](/Images/OutliningIndicators/InBlock.gif)
30
![](/Images/OutliningIndicators/InBlock.gif)
31
![](/Images/OutliningIndicators/InBlock.gif)
32
![](/Images/OutliningIndicators/InBlock.gif)
33
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
34
![](/Images/OutliningIndicators/InBlock.gif)
35
![](/Images/OutliningIndicators/InBlock.gif)
36
![](/Images/OutliningIndicators/InBlock.gif)
37
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
38
![](/Images/OutliningIndicators/InBlock.gif)
39
![](/Images/OutliningIndicators/InBlock.gif)
40
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
41
![](/Images/OutliningIndicators/InBlock.gif)
42
![](/Images/OutliningIndicators/InBlock.gif)
43
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
44
![](/Images/OutliningIndicators/InBlock.gif)
45
![](/Images/OutliningIndicators/InBlock.gif)
46
![](/Images/OutliningIndicators/InBlock.gif)
47
![](/Images/OutliningIndicators/InBlock.gif)
48
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
49
![](/Images/OutliningIndicators/InBlock.gif)
50
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
51
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
52
![](/Images/OutliningIndicators/None.gif)
53
![](/Images/OutliningIndicators/None.gif)
54
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
55
![](/Images/OutliningIndicators/InBlock.gif)
56
![](/Images/OutliningIndicators/InBlock.gif)
57
![](/Images/OutliningIndicators/InBlock.gif)
58
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
59
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
60
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
61
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
62
![](/Images/OutliningIndicators/InBlock.gif)
63
![](/Images/OutliningIndicators/InBlock.gif)
64
![](/Images/OutliningIndicators/InBlock.gif)
65
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
66
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
67
![](/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
68
![](/Images/OutliningIndicators/ExpandedSubBlockEnd.gif)
69
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
70
运行结果如下: