| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1074 人关注过本帖
标题:[求助]n个人报数,报道3的推出.......
只看楼主 加入收藏
heaiso1985
Rank: 1
等 级:新手上路
帖 子:21
专家分:0
注 册:2006-12-11
收藏
得分:0 
以下是引用渚薰在2007-1-6 12:01:19的发言:

最简单的是用循环数组,但是,有两个缺点
1、如果在人出列的时候,对数组进行删除操作,会加大时间复杂度
2、如果用结构体类型,表明某一个人已经出列,那么这样会加大空间复杂度

所以,这类题目(如果n很大的话),最好就是用链表,伪代码如下
typedef struct people{
int num;
people *next;
}

main() {
根据n初始化单向循环列表,第一个节点为p;
k=1;
while (p->next!=p) //判断是否只剩一个节点
{
if (k==3)
{
从链表中删除p节点,同时p指向被删除节点的后一个节点;
k=1;
} else {
k++;
p=p->next;
}
}
最后打印p->num;
}


就是对的呀

2007-01-06 23:18
快速回复:[求助]n个人报数,报道3的推出.......
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.017167 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved