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退出。------希望采纳!!
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报
悬赏问题
- ¥15 基于FOC驱动器,如何实现卡丁车下坡无阻力的遛坡的效果
- ¥15 IAR程序莫名变量多重定义
- ¥15 (标签-UDP|关键词-client)
- ¥15 关于库卡officelite无法与虚拟机通讯的问题
- ¥100 已有python代码,要求做成可执行程序,程序设计内容不多
- ¥15 目标检测项目无法读取视频
- ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
- ¥100 求采集电商背景音乐的方法
- ¥15 数学建模竞赛求指导帮助
- ¥15 STM32控制MAX7219问题求解答