int TBLCreate(MNG* pMng, int nCnt)
{
memset(vis, 0, sizeof(vis)); //防止随机值重复
if (!pMng)
return -1;
pMng->nNodeCnt = nCnt;
LTBL* p = (LTBL*)malloc(sizeof(LTBL)); //创建头节点
if (!p)
return -1;
int x = 0;
x = rand() % 1000;
vis[x] = 1;
p->nKey = x;
p->pPre = NULL;
p->pNxt = NULL;
pMng->pHead = p;
for (int i = 1; i < nCnt; ++i)
{
LTBL* temp = (LTBL*)malloc(sizeof(LTBL));
if (!temp)
return -1;
while (1)//随机值防止重复
{
x = rand() % 1000;
if (!vis[x])
{
vis[x] = 1;
break;
}
}
temp->nKey = x;
temp->pNxt = NULL;
temp->pPre = p;//新节点前驱指向当前节点
p->pNxt = temp;//当前节点的后继为新节点
p = p->pNxt;//当前节点后移
}
return 0;
}
vis[x] = 1是什么意思
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- zh_wo_niu 2020-06-16 10:02关注
memset(vis, 0, sizeof(vis)); //防止随机值重复
x = rand() % 1000; 取到随机数x之后,令 vis[x] = 1; 它实际上就是一个flag,表示x这个随机数已经被用过了,所以用vis[x] = 1 标记一下,
while (1)//随机值防止重复
{
x = rand() % 1000;
if (!vis[x])
{
vis[x] = 1;
break;
}
}
所以这里就是如果 vis[x] = 1的话,说明此随机数已存在,那么继续循环取下一个不存在的随机数,如果取到了,标记为1,然后break退出。------希望采纳!!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
- ¥40 串口调试助手打开串口后,keil5的代码就停止了
- ¥15 电脑最近经常蓝屏,求大家看看哪的问题
- ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
- ¥50 C++五子棋AI程序编写
- ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
- ¥15 SQL Server analysis services 服务安装失败