用DFS解决八皇后问题(非递归)(c#)

需要注意的是,比如如下代码:

  Node tmp5 = new Node();
                        tmp5.col = node.col;
                        tmp5.row = node.row;

                        stackk.Push(tmp5);

为什么不是直接 stackk.Push(node);不是更方便吗
由于本人知识浅薄,还没悟出其中缘由,脑海里依稀认为 若是直接“=”赋值便是赋值而不是引用,node的变化应该不会改变stackk.Peek()的值才对,如果要修改应该要加入ref类似的标记,但是事实却是如果 node=stackk.Peek();修改 node的值之后,stackk.Peek()值也会发生改变,所以需要上面代码这么写才不会改变栈里面原来的值

using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace EightQueenNotRecursive
{
    class Program
    {
        int[] a = new int[8];
        int solution = 1;
       public class Node
        {
            public int row;
            public int col;
        }
        public bool isOK(Node node)
        {
            for (int i = 0; i 

你可能感兴趣的:(用DFS解决八皇后问题(非递归)(c#))