c#,利用链栈将十进制转换为二进制
时间: 2024-09-30 15:03:37 浏览: 20
在 C# 中,我们可以使用 `List<int>` 类型来模拟链栈的功能,因为 List 的 `Push()` 和 `Pop()` 方法非常适合栈的操作。下面是如何使用链栈(这里实际上是 List 实现的)将十进制数转换成二进制的简单示例:
首先,定义一个 `Node` 类作为栈的元素:
```csharp
public class Node
{
public int Value { get; set; }
public Node Next { get; set; }
}
```
然后,创建一个 `Stack` 类来封装链栈操作:
```csharp
using System.Collections.Generic;
public class Stack
{
private List<Node> elements = new List<Node>();
public void Push(int value)
{
elements.Add(new Node { Value = value, Next = null });
}
public int Pop()
{
if (elements.Count == 0)
throw new InvalidOperationException("Stack is empty");
int result = elements[0].Value;
elements.RemoveAt(0);
return result;
}
public bool IsEmpty => elements.Count == 0;
}
```
接下来,实现十进制转二进制函数:
```csharp
public string DecimalToBinary(int decimalNumber)
{
Stack stack = new Stack();
while (decimalNumber > 0)
{
stack.Push(decimalNumber % 2);
decimalNumber /= 2;
}
var binaryString = new StringBuilder();
while (!stack.IsEmpty)
{
binaryString.Append(stack.Pop().ToString());
}
return binaryString.ToString();
}
```
在这个函数里,我们首先计算余数并将它们压入栈,然后每次从栈顶取出一位,添加到结果字符串中。