我目前正在使用链接列表。我的任务是要求我使用它们来创建反向抛光计算器。我无法理解如何将字符串的每个部分放入堆栈中。我的代码目前看起来像这样
主:
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
答案 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);
}
}
}