我的问题被人删除,是删除者个人征信有问题题吗

QQ好友删除后删除列表里没有被删除者是怎么回事??_百度知道
QQ好友删除后删除列表里没有被删除者是怎么回事??
我有更好的答案
???还有删除列表这种操作吗?应该是屏蔽列表吧。因为删友了就自动屏蔽了。可以去屏蔽列表里找找。而且如果是手机系统的话可以想想是不是最近才删的。如果是就刷新一下再查吧。
采纳率:45%
可能是删除太的人太多了,系统没刷新出来,你去QQ安全中心里面找好友恢复看看!(要会员)记得选择删除日期!看看能不能找到!
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。提问的问题,自己删除后,别人或者回答过你问题的人还能看见你的问题或者图片吗_百度知道
提问的问题,自己删除后,别人或者回答过你问题的人还能看见你的问题或者图片吗
我有更好的答案
谢谢希望帮得到你
我试了下,在别人主页还能看到
我截图给你看
采纳率:21%
看不到了,因为你删除了,对方看到的是整个页面显示这个问题已被删除,
我试了下,在别人主页还能看到
你是不是很快试的,过段时间是看不到的
恩,好像是
你过段时间再试试,是看不到的
删除后就不能了。
我试了下,在别人主页还能看到
不能了,看不了,打不开了
我试了下,在别人主页还能看到
其他2条回答
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。为什么老删我的问题,我就想我死了别人知道我是谁知道我在哪里,好给我送到家。_百度知道
为什么老删我的问题,我就想我死了别人知道我是谁知道我在哪里,好给我送到家。
我有更好的答案
从情感的角度上讲,删除者不想把事情做得太绝,觉得也没有这个必要。 或者是当时一时头脑发热,事后有点后悔了。
没啥后悔的,自己的路自己选择的
采纳率:76%
为您推荐:
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。这里有没有小米 miui 论坛的人,我这个造福小米受害者的帖子为什么被删除了?
· 87 天前 · 2887 次点击
为什么不去 miui 论坛申诉? 因为以前遇过类似事情,对 miui 论坛已经不抱希望了。
24 回复 &| &直到
23:49:35 +08:00
& &87 天前 via iPhone
指纹校准什么原理.....
& &87 天前 via iPad
京东上小米手机一片差评,可能是系统删不掉?
& &87 天前 via iPhone
发下一手资料地址?
& &87 天前
因为链接?
& &87 天前 via Android
好像 v2 没有小米的人,小米的程序员不上 v2 吗?
& &87 天前
@ 我也想知道是什么原理,我还为此发过一个帖子
& &87 天前
敏感词了?
& &87 天前 via Android
论表达的艺术
你把标题改成:完美解决指纹录不进去的问题
内容绝不要提小米质量不好,退货的字眼。他就不删你的贴了。
& &87 天前 via Android
@ key point
& &87 天前
也许你真的是造福小米用户
但是,
1. 你直接主观认定是手机存在问题,换哪家都不可能让你这样说吧,你得拿出真凭实据对吧
2. 直接甩一个网盘链接的 apk,apk 有没有问题,谁来负责呢?
& &87 天前
我来歪一下楼:如果是手机问题,为什么只影响左手指纹?很好奇
& &87 天前 via iPhone
第三方的指纹校正软件可能会造成指纹泄露,指纹泄露后果严重。无论是不是质量问题,我觉得删你贴是常规操作。
& &87 天前
在小米论坛推荐退货。。
这是典型的政治不正确啊。
没被人肉就不错。
没被 1000w 就不错。
& &87 天前 via Android
删了很正确的
& &87 天前 via Android
小米论坛发不了上别的论坛发。。。我还被封号。后来不知道为什么又解封了。买这么多的小米商品,然后好处没有,得到的是小米电视广告。。。。。而且不能关闭。
& &87 天前
不知道校准的原理,但是未知来源 APP,还是跟指纹相关,我是不敢装的。
退不了货就换,换不了就修,还解决不了就 315 投诉。
& &87 天前 via Android
不这么做他们怎么能保住一个利益链条?
& &87 天前
别张口闭口造福了。有这个问题的人有多少谁也不知道,可能确实很多吧。但是你这直接推荐一个这样的 APP, 还会涉及到指纹操作。。。万一这个软件后台对接某个黑市系统,开放接口专门给偷来的手机测是否存了这台机器的指纹。那丢个手机就不是几千块钱的事了。。。当然,上面纯属我脑补
& &87 天前 via iPhone
搞不好校准指纹的 apk 是删除系统里面的指纹验证来达到秒开的效果
& &87 天前
楼主情商是硬伤。。估计和人打交道有点困难吧。。
& &87 天前
别的先不说,真有问题,小米不会推送系统更新吗?需要你在这散播三无 APK ?要是我,删帖已经算轻的了,直接永久封禁。
& &86 天前 via Android
@ 动不动就封号。封号能解决问题?完全没有,这是米粉变米黑的方案。小米电视广告也是。一个客户反馈意见,然后封号,这能解决问题?这是对待客户的方案?所以说,小米客服和小米电视广告负责人逻辑思维问题很有问题。
& &86 天前
@ 你这叫反馈问题?如果你这都能算反馈问题,那我下面这一段也可以叫反馈问题。
大家如果感冒了在这家三甲医院挂了三天水都没好,不用怀疑,就是这家医院有问题,他们用了假药。我推荐大家都去某莆田系医院,那里的医生开的药一吃马上就好了。写在这里造福各位受害者。
& &86 天前 via Android
@ 这么弱的系统是不是要检讨。?不能关闭贴子回复权限然后说明关闭贴子回复。然后说明关闭原因,而不是删贴。请说明什么原因而删贴。删贴和封号和小米电视广告开机不能关闭,开机一堆广告牛皮癣贴在大厅中间。是小米公司对消费者和购买者的尊重和态度?如果你电视是免费送给我,放广告,我没意见,但电视是我买的,就不要强奸式放广告。
& · & 3016 人在线 & 最高记录 3541 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 19ms · UTC 03:34 · PVG 11:34 · LAX 20:34 · JFK 23:34? Do have faith in what you're doing.约瑟夫环:每隔两个循环删除数组元素,求最后删除者的下标问题
有一次到华为面试软件,遇到一个编程问题,就是题目所说的问题.直到最近才和同学聊到这个问题.今天晚上特意加班看了这个问题的解决方法,搜集如下.在平时的生活中注意积累是一个很好的习惯,也许这个小小的编程的问题就会影响到你以后的工作.
有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数,到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置(原来的数可能是无序的,另外数是否重复从题意无法确定)。
以8个数为例:
{0,1,2,3,4,5,6,7}
0--&1--&2(删除)--&3--&4--&5(删除)--&6--&7--&0(删除),如此循环直到最后一个数被删除。
本题的关键是如何理解删除的概念,一种是将其彻底删除,将后面未删除的全部前移,这将浪费大量的时间用来移动后续数据;另外一种只是仍然存在但已经失去意义,遍历过程中不管之。
另外一个关键是如何在移动的过程中保持数据的原始下标,因为数据本身可能是无序的,下标和数据可能没有关系,并且还可能重复
性能分析:
时间效率:循环队列法由于每次扫描的数都是未删除的,时间整体效率最高;标志数组法只是将此数标记为删除了,但遍历时仍然要扫描;链表法要建立链,时间效率低
空间效率:标志数组法,未申请额外的空间,空间效率最高;循环队列法至少申请第一次未删除的空间,另外作为接口函数来实现的话,由于新申请的空间不能与传入的数组地址相连,因此有局限性;链表法额外建立链表,空间效率最低
约束因素:
对于只读数组,普通的标志法都不能用了,将高位置1遍历完后清除的方法借鉴意义最高;时间和空间效率最均衡;链表法可以处理只读数组的问题;循环队列法此时无法实现;当然对于标志法,可以额外申请空间保存标志,也可以处理只读问题,但空间效率下来了
面试中的最优选择:
将高位置1遍历完后清除,效率最高
数组方式二的优化版本,三层while,程序的逻辑功能划分明确
数组方式一的优化版本,程序的结构易懂清晰
循环队列法最难想到,个人认为相对于标志数组更有创新性
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
方法1:访问原数组,置删除标志
这题目如果是面试题,那考的就是用数组,增加难度的。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
数组方式一:
const & int & size=1000; &
void&& ArrayTest1
& { &
& & & & int & arr[size]; &
& & & & int & currentSize= &
//指示当前数组中还剩余有效元素的个数,为1时表示删除\完毕;&
& & & & int & count=0; & &
& //计数用; &
& & & & for(int &
k=0;k&k++) &
& & & & { &
& & & & arr[k]=k; &
& & & & } & &
& & & & & //
i用%循环计数,终止条件是删除的只剩最后一个数了
& & & & for(int &
i=0;(i&size) &
&& & (currentSize!=1);
& i=(i+1)%size) &
& & & & { &
& & & & if(arr[i]!= -1 ) & // -1为已经删除的标志,未删除对之计数,已经删除的则看下一个
& & & & { &
// 按照计数间隔计数,达到间隔时删除数据
& & & & if(count&=0 &
&& & count&2)
& & & & { &
& & & & count++; &
& & & & }else & if(& count==2)
& // 逻辑有点乱
& & & & { &
& & & & & & arr[i]=
-1;//将此元素做上标记,表示删除此时的元素; &
& & currentSize--;//有效元素减一; &
& & count=0;//并将计数值归零; &
& & & & } &
& & & & } & &
& & & & } &
& & & & for(int &
j=0;j&j++) & // 浪费时间啊&
& & & { &
& & & & if(arr[j]!=-1) &
& & & & { &
cout&&"the & result & is
:"&&j&&
& & & & } &
& & & & } &
优化版本:宏定义意义明确,更改方便,是良好的编程习惯,要在笔试面试中展现这种特点
删除数据时保存了其位置和实际的数据值,无需最后一次扫描
三层判断条件功能清晰:总数,是否删除,是否达到间隔值
#define&& SIZE
#define&& STEP
#define&& DELFLAG&(SIZE +
ArrayTest1Opt(void)&&
int&& arr[SIZE];&&
int&& currentSize=SIZE;&&
//指示当前数组中还剩余有效元素的个数,为0时表示删除\完毕;&&
int&& count=0;&&&&&&
//计数用;
int&& i = 0;
int&&& &lastdelindex =
0;&&&&&&&& // 用来保存每次删除值的位置,不用留最后一个然后遍历
int&&& &lastdelvalue =
0;&&&&&&&& // 用来保存每次删除值,不用留最后一个然后遍历
k=0;k&SIZE;k++)&&
&&&&&&&&&&&&&
arr[k]=k;&&
i用%循环计数,终止条件是删除所有的数了
//for(int&& i=0; currentSize!=0;
i=(i+1)%SIZE)
while(currentSize!=0)&
&&&&&&&&&&&&&
if(arr[i]!= DELFLAG )&& // DELFLAG为已经删除的标志,未删除对之计数,已经\删除的则看下一个
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
// 按照计数间隔计数,达到间隔时删除数据
&&&&&&&&&&&&&&&&&&&&
if( count++
//注意++的位置
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
lastdelindex =&&&&& // 用来保存每次删除值的位置
lastdelvalue =
arr[i];&&&&&& // 用来保存每次删除值的位置
&&&&&&&&&&&&&&&&&&&&&&&&&&&
DELFLAG;//将此元素做上标记,表示删除此时的元素;&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
currentSize--;//有效元素减一;&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
count=0;//并将计数值归零;&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
i=(i+1)%SIZE;&&&&&&
cout&&"the original array location of
the last del value is:
"&&lastdel&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
数组方式二:两重while循环,将间隔计数的直接写成了程序,未用循环,这样移植性差了
//#define&& SIZE
//#define&& STEP
//#define&& DELFLAG&(SIZE
void ArrayTest2(void)
int arr[SIZE];
i=0;i&SIZE;++i)
arr[i]=i; // 实际情况并非一定如此啊
int count=0;
while(count&SIZE-1)&&&&
// 999保留了最后一个未删除的数
while(arr[j%1000]==DELFLAG)
j=(++j)%SIZE;
j=(++j)%SIZE;&&&&&&
// 第一个未访问的数
while(arr[j%SIZE]==DELFLAG)
j=(++j)%SIZE;
j=(++j)%SIZE;&&&&&&
// 第二个未访问的数
while(arr[j%SIZE]==DELFLAG)
j=(++j)%SIZE;
arr[j]=DELFLAG;&&&&&&&&&
//删除第三个未访问的数
while(arr[j]==DELFLAG)&&&&&
// 扫描最后一个未删除的数
j=(++j)%SIZE;
优化版本:程序的逻辑功能划分明确,每个while处理一层逻辑,结构更易懂,程序的移植性强,while中的循环次数可随意更改
上面方法中的step在程序中固定了
void ArrayTest3Opt(void)
int arr[SIZE];
i=0;i&SIZE;++i)
arr[i]=i; // 实际情况并非一定如此啊
int count=0;
int stepcounter=0;
int delindex = 0;
while(count&SIZE)
// 删除总次数
// 删除一个
while(stepcounter &= STEP) //
寻找第三个未访问的数
while(arr[j%SIZE]==DELFLAG)&//剔除已删除的
j=(++j)%SIZE;
j=(++j)%SIZE;&&&&&& //
(++j)中的j为一个未访问的数,而非保存后的j,故下面delindex = j
stepcounter ++;
//delindex = j
-1;&&&& // 由于上面j加一后可能溢出重头开始了,因此先加SIZE
delindex = (j + SIZE
-1)%SIZE;&&& // 保存当前删除数的下标
stepcounter = 0;
arr[delindex]=DELFLAG;&&&&&&&&&&&&
// 删除第三个未访问的数
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
标志数组方式三:
对于只读数组,也可以置标志,访问完毕后能够恢复初始序列即可
当前存放的数是正数,且有一定的范围,可是利用其最高位做为已经删除标志,最后一个删除的数其最高位为0,下标可知,实际数据可知。所以数据删除完后,清除最高位的删除标志,即可恢复原始序列。
#define&& delFLAG&(1
&& ((sizeof(int)*8) -
// 注意上述首位置1的定义,考虑了int字节个数的影响,对于嵌入式软件工程师来说时刻考虑跨平台的移植性能,是个很重要的素质&
_ArrayTest3(void)&&
int&& arr[SIZE];&&
int&& currentSize=SIZE;&&
//指示当前数组中还剩余有效元素的个数,为0时表示删除\完毕;&&
int&& count=0;&&&&&&
//计数用;
int&&& &lastdel = 0;
int&& i = 0;
k=0;k&SIZE;k++)&&
&&&&&&&&&&&&&
arr[k]= SIZE -&&
i用%循环计数,终止条件是删除的只剩最后一个数了
while(currentSize!=0)
&&&&&&&&&&&&&
if(arr[i] &= 0
)&& // 当前数大于等于0时,未删除,已经删除的则看下一个
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
// 按照计数间隔计数,达到间隔时删除数据
&&&&&&&&&&&&&&&&&&&&
if( count++ == STEP)&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
delFLAG;&//将此数最高位置为1,此时其为负数,表示删除&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
currentSize--;//有效元素减一;&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
count=0;//并将计数值归零;&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
i=(i+1)%SIZE;
cout&&"the original array location of
the last del value is:
"&&lastdel&&
// 清除最高位的1,恢复原始数组
for(k=0;k&SIZE;k++)&&
&&&&&&&&&&&&&
~delFLAG; // 注意这种清除方式的移植性很高&
时间复杂度比在初始数组中置标志多了最后的清除删除标志,空间复杂度为0,没有额外申请空间保存访问标志和下标,相比额外申请1000个空间处理只读数组空间效率高。
比下面循环队列的空间效率高,时间效率低,因为此法访问了已经删除的无效数据。
这个题看似说只能使用数组,但可以考虑使用数组完成链表的功能,建议再开一个1000大小的数组,每个元素里面放的是另外一个数组中对应元素的脚标,即0-999.然后循环按此数组循环,修改链表是通过置访问标志来实现的,最后一个未置标志的数就是原始下标了,原数组中就是最后删除的实际数据。不用动原来的数组里面的数据..
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
方法2:循环队列,将未访问的数据移动到循环队列末尾& &
& #define & MaxCount & 1000 & &
& void & RoundQueue(void) &
& { &
& int & list[2*MaxCount]; & & & &
& & & & & & & & &
& & //多分配一倍的空间,用来放循环数据 &
& int & i,index=0,tail,delcount=0; &
& for(i=0;i&MaxCi++) & list[i]=i;
& & //初始化,存放0~999 &
& tail=MaxC //list[tail]用来存放不删除的数据 &
& while(delcount&MaxCount) //删除1000个就退出
& { &
& &//第三个数据删除,此处有误,因为index循环时重新赋值了,导致((index %3)的错误&
& if((index %3)==2)
& { &
& delcount++; &
& printf("%d\t",list[index]); &
& } &
& else & & & //前两个数据放到队列末尾, &
& { &
& list[tail]=list[index]; &
& tail=(tail+1) % (2*MaxCount); &
& } &
& index=(index+1) %
(2*MaxCount);//步近&
& } &
& return & ; &
// 缺点,不能输出最后一个删除数的原始下标,只能输出其值,因为该数组可能是随机的,下标与值可能不一致
// 此题的考点就在于删除过程中拷贝了数据后如何保存原始位置,否则的话我每次删除一个值后,将后面所有的数前移,然后再删,没有意义了&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
循环队列改正版
void & RoundQueue(void)
list[2*MaxCount];&//多分配一倍的空间,用来放循环数据&&
i,index=0,counter=0,tail,delcount=0;&
int&&& lastdel =
for(i=0;i&MaxCi++)&&
list[i]=i;&&&&
//初始化,存放0~999&&
//list[tail]用来存放不删除的数据&&
while(delcount&MaxCount)
//删除1000个就退出&&
counter++;
if(counter==3) //第三个数据删除,单独计数,不用index&&
delcount++;
counter = 0;
lastdel = list[index];&
//printf("%d\t",list[index]);&&
else&&&&&&
//前两个数据放到队列末尾,&&
list[tail]=list[index];&&
tail=(tail+1)%(2*MaxCount);&&
index=(index+1)%(2*MaxCount);//步近&&
printf("%d\n",lastdel);
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
循环队列优化版
//#define&& STEP
#define&& FST_ROUND_LEFT&& (MaxCount -
MaxCount/(STEP+1))
//#define&&
ARRAYSIZE&(MaxCount+MaxCount)
ARRAYSIZE&(MaxCount+FST_ROUND_LEFT)
// 在第一轮里未删除的数,应该保存未删除数据的下标
// 以后待删除的数已经都是下标了,应该保存其值,最后删除的数就是其原始数的下标了
RoundQueueOpt(void)&&
int&& list[ARRAYSIZE];
&//多分配一倍的空间,用来放循环数据,其实多分配\\FST_ROUND_LEFT即可了,即 list[FST_ROUND_LEFT+MaxCount],后面的循环值要改下&
i,index=0,counter=0,tail,delcount=0;&
int&&&&&&&&&&
lastdel = 0, firstround =
for(i=0;i&MaxCi++)&&
&&&&&&&&&&&&&
list[i]=MaxCount - 1 -&&&&
//初始化,存放999~0,此时下标和数是非对应的&&
tail=MaxC //list[tail]用来存放不删除的数据下标或已经保存的下标&&
while(delcount&MaxCount)
//删除1000个就退出&&
&&&&&&&&&&&&&
counter++;
&&&&&&&&&&&&&
if(counter==3)
//第三个数据删除&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
delcount++;
&&&&&&&&&&&&&&&&&&&&
counter = 0;
&&&&&&&&&&&&&&&&&&&&
if(firstround)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
lastdel=list[index];
&&&&&&&&&&&&&&&&&&&&
//printf("%d\t",list[index]);&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&
else&&&&&&
//前两个数据放到队列末尾,&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
if(firstround)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
list[tail]=
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&
list[tail]=list[index];
&&&&&&&&&&&&&&&&&&&&
if(firstround)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
if(tail - MaxCount ==
FST_ROUND_LEFT - 1)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
firstround = 0;&&&&&& //
清除第一轮标志,以后保存值(保存后的下标)
&&&&&&&&&&&&&&&&&&&&&&&&&&&
printf("%d\n",FST_ROUND_LEFT);
&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
tail=(tail+1)%(ARRAYSIZE);&&
&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&
index=(index+1)%(ARRAYSIZE);//步近&&
printf("%d\n",lastdel);
把数组当作一个循环队列,就可以循环运算了,关键在于将数据后移的过程中要保存住其初始下标位置,是通过计第一次循环来实现的&
每次扫描的数都是有效的,因此此法相比标志数组法效率更高。但申请了额外的数组,因此空间效率较标志数组法低。
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
方法三:链表
如果先用链表存储数组的话,将数据和下标封装起来,建立链表,利用指针即可达到快速移动数据的目的;将原数组封装成单向循环链表,每隔两个删除一个节点,最后一个删除的节点即是所求,其保存了原始数据及其下标
当然由于此为单独建立了链表,原有的数组数据并未更改,因此得到了最后一个删除数据的下标即可访问原数组得到对应的数据;因此数据成员可以不含data域
此题是考链表的一个典型的例子
struct node
#define null 0
int LinkTest2(void)
int arr[SIZE];
i=0;i&SIZE;++i)
arr[i]=SIZE-i; // 实际情况可能是随机的
node* head=
head-&data=arr[0];
head-&index=0;
head-&next=
for(i=1;i&1000;i++)
node* tmp=
tmp-&data=arr[i];
tmp-&index=i;
tmp-&next=
head-&next=
head=head-&
head-&next=p;
while(p!=p-&next) //
p指向自己时,循环链表只剩一个元素了
p-&next-&next=p-&next-&next-&
p=p-&next-&
// 存在内存泄漏
cout&&p-&index&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
typedef & struct & Lnode &
& { &
& & & & & int & &
& & & & & struct & Lnode &
& }Lnode,*L &
& Lnode & *Create() &
& { &
& & & & & Lnode & *head,*p1,*p2;
& & & & & int & &
head=(Linklist)malloc(sizeof(Lnode)); &
& & & & & head-&next=NULL;
& & & & & head-&num=0;
& & & & & & & & &
& & & & & p2= &
for(i=1;i&1000;i++) &
& & & & & { &
& & & & & & & & &
p1=(Linklist)malloc(sizeof(Lnode)); &
& & & & & & & & &
p1-&num=i; &
& & & & & & & & &
p1-&next=NULL; &
& & & & & & & & &
p2-&next=p1; &
& & & & & & & & &
& & & & & } &
& & & & & p1-&next= &
// 单向循环链表
& & & & & return & &
& } &
& void & Del(Lnode & *head) &
& { &
& & & & & Lnode & *n,*m,*q;
& & & & & int & i=0; &
& & & & & m= &
& & &&&&&&&&
// m first&n
second&q third should be deled
& & & & & while(i&1000) &
// 未删完,当剩下三个以内时,释放q删除后可能出问题&
& & & & { &
& & & & & & & & &
& & & & & & & & &
q=n-& & & & & & &
& & & & & & & & &
n-&next=q-& & & &
& & & & & & & & &
free(q); &
不释放q没有问题,但存在内存泄漏啊
& & & & & &
& & & m=n-& &
& & & & & & & & & i++;
& & & & & } &
& & & & & printf("%d\n",m-&num); &
& } &
LinkTest1(void)&&
Lnode&& *q;&&
q=Create();&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
一点思考:
这个题目在计算机界叫约瑟夫环,有很多模型是根据此建立的
有没有听说过一个游戏,叫出局,这个是游戏的抽象简化,游戏如下:一群人(n个)围成一圈,选中某人作为开始从1数数,数到k的人从圈中出来,下一位从1开始轮流数,看最后剩下谁.(k=1,2...n-1),就是%符的应用而已
参考鸣谢:http://topic.csdn.net/t//4579928.html
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 男人人品有问题的表现 的文章

 

随机推荐