堆栈计数不正常

时间:2013-10-12 15:24:37

标签: c# stack

为什么我的代码没有按预期工作? 试图检查stack.Count是否> 0并且它无法正常工作

toShort(“../../../ z”)返回“../z”,但应返回“../../../z” 更新:

static String toShort(String path)
    {
        String[] elements = path.Split('/');
        String result = "";
        Stack<String> stack = new Stack<String>();
        for (int i = 0; i < elements.Length; i++)
        {
            if (stack.Count>0&&elements[i].Equals(".."))
                stack.Pop();
            else
                stack.Push(elements[i]);
        }
        List<String>list = new List<String>();

        foreach (String str in stack)
            list.Add(str); 
        list.Reverse();
        int n = list.Count;
        for (int i = 0; i < n; i++)
            if (i != n - 1)
                result += list[i] + "/";
            else
                result += list[i];

        return result;
    }

1 个答案:

答案 0 :(得分:2)

你的程序完全按照你的要求去做。堆栈工作正常。第二个..会导致第一个..被删除。如果您在调试器中逐步执行该程序,您会注意到这一点。