例如一组数[ 4 , 8 , 1 , 3 ,5 ,9 ,6 ] ,现在给出一个数5,发现里面已经有了,那么就把5前置到左边第一位。即给个N,如果N在数组中存在,就前置到最前第一位。SCL如何写?
最佳答案
这里假设你这个数组里没有重复的数字,可以按下面的程序编写实现
FOR #i := 0 TO 6 DO
IF #Array[#i] = #N THEN
IF #i = 0 THEN //当第一位就是你N时,直接退出循环;
EXIT;
ELSE
FOR #j := #i TO 1 DO //如果不是第一个是N,则需要等于N的那个数组元素提到第一位,并且把其它向后移;
#Array[#j] := #Array[#j - 1];
END_FOR;
#Array[0] := #N;
END_IF;
END_IF;
END_FOR;
提问者对于答案的评价:
我把这个嵌套进去后,无法进行数据入栈,指针数直接为21。正常时栈内是全部位零,应该是上升沿触每发一下新写进去一个不为零的数,如果栈内已经有这个数了,那就把它前置到第一位,没有的话就写排到现有的以后一个不为零的数后面。大哥 有空的话你加我QQ 2300023577 帮我看看吧
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc371651.html