按空格分析字符串,将每个项目放入链接列表中。没有阵列

时间:2017-01-30 07:43:53

标签: c# linked-list

我目前正在使用链接列表。我的任务是要求我使用它们来创建反向抛光计算器。我无法理解如何将字符串的每个部分放入堆栈中。我的代码目前看起来像这样

主:

static void Main(string[] args)
        {
            LinkedList data = new LinkedList();
            string UserData = Console.ReadLine();
            Console.WriteLine("Enter a calculation in polish notation.");
            data.Parse(UserData);

        }

这里我只是访问接收字符串“UserData”的“LinkedList”类中​​的parse方法。从那里我想开始阅读字符串并将每个部分放入堆栈。如果没有阵列,我不清楚如何实现这一目标
这是我的解析方法:

public void Parse(string Input)
        {
            int data;  
            if(Input!=null)
            {

            }

        }

如你所见,我什么都没有。在我的脑海里,我想我应该解析字符串,然后将每个项目放在堆栈中,但我很可能是错的。以下是整个LinkedList类:

public class LinkedList
    {
        private Node FrontHead;

        public void printNodes()
        {
            Node Current = FrontHead;
            while (Current != null) 
            {
                Console.WriteLine(Current.data);
                Current = Current.next;
            }
        }
        public void Parse(string Input)
        {
            int data;  
            if(Input!=null)
            {


            }

        }              
        public void Add(Object data)
        {
            Node NextToadd = new Node();
            NextToadd.data = data;
            NextToadd.next = FrontHead;
            FrontHead = NextToadd;
        }
        public void last(Object data)
        {
            if (FrontHead == null)
            {
                FrontHead = new Node();
                FrontHead.data = data;
                FrontHead.next = null;
            }
            else
            {
                Node New = new Node();
                New.data = data;

                Node Crt = FrontHead;
                while (Crt.next != null)
                {
                    Crt = Crt.next;
                }
                Crt.next = New;
            }
        }
    }

节点类:

 public class Node
    {
        public Object data;
        public Node next;              
    }

示例运行如下:
输入:
1 2 + =
输出:
3

2 个答案:

答案 0 :(得分:0)

你可以做到

public void Parse(string Input)
{
    if(Input!=null)
    {
       foreach (string s in Input.Split(' '))
       {
           Add(s);
       }
    }
}    

但从技术上讲,Split会返回一个数组。所以它取决于你的意思" NO ARRAYS",因为我假设这意味着链表不是数组,但数组可以在其他地方使用

答案 1 :(得分:0)

在Parse方法中迭代给定字符串的每个子字符串。并调用last(根据您的代码名称)方法将每个子字符串添加到列表中

public void Parse(string Input)
{
        int data;  
        if(Input!=null)
        {
            foreach(string subString in Input.Split(' '))
            {
               //call last method
                last(subString);
            }
        }
 }