c语言遍历是什么意思?

Python09

c语言遍历是什么意思?,第1张

c语言遍历是指沿着某条搜索路线,依次对树(或图)中每个节点均做一次访问。访问结点所做的操作依赖于具体的应用问题, 具体的访问操作可能是检查节点的值、更新节点的值等。不同的遍历方式,其访问节点的顺序是不一样的。遍历是是c语言上进行其它运算之基础。

扩展资料:

由于从给定的某个节点出发,有多个可以前往的下一个节点,所以在顺序计算(即非并行计算)的情况下,只能推迟对某些节点的访问——即以某种方式保存起来以便稍后再访问。常见的做法是采用栈(LIFO)或队列(FIFO)。

由于树本身是一种自我引用(即递归定义)的数据结构,因此很自然也可以用递归方式,或者更准确地说,用corecursion,来实现延迟节点的保存。这时(采用递归的情况)这些节点被保存在call stack中。

思路1:

写出所有24种4个数的排列,存到一个数组里,假如数组是P[24][4];

那么可以

for

(i

=

0

i

<

24

i++)

for

(j

=

0

j

<

24

j++)

for

(k

=

0

k

<

24

k++)

三层循环,P[i],P[j],P[k]分别是矩阵的三个列

思路2:

利用dfs递归枚举

int

used[3][4]/*这个数组存放三个列中0~3这四个数是否已在这一列中出现过,需要提前清零*/

int

mat[3][4]/*要枚举的矩阵*/

void

dfs(int

col,

int

row)/*col表示现在已经搜索到哪一列(从0开始编号),row表示这一列已经填了几行*/

{

int

i

if

(col

==

2

&&

row

==

4)

{

....../*运行到这里的时候,mat就是枚举到的一个矩阵*/

return

}

if

(row

==

4)

{row

=

0

col++}

for

(i

=

0

i

<

4

i++)

if

(!used[col][i])

{

used[col][i]

=

1

mat[col][row]

=

i

dfs(col,

row

+

1)

used[col][i]

=

0

}

return

}

调用的时候调用dfs(0,0)