15588686105 发表于 2023-9-24 21:14:48

用顺序栈转换十六进制,十进制

请编程实现用顺序栈将十进制转换为十六进制。输入一个十进制数例如2623,输出A3F。
没写过数据结构的代码,有老哥会吗,python可以写吗

isdkz 发表于 2023-9-24 21:14:57

可以使用Python实现顺序栈来将十进制数转换为十六进制数。以下是示例代码:

class Stack:
    def __init__(self):
      self.items = []

    def is_empty(self):
      return self.items == []

    def push(self, item):
      self.items.append(item)

    def pop(self):
      return self.items.pop()

def decimal_to_hex(decimal_num):
    hex_stack = Stack()
    hex_dict = {10: "A", 11: "B", 12: "C", 13: "D", 14: "E", 15: "F"}

    while decimal_num > 0:
      remainder = decimal_num % 16
      if remainder >= 10:
            hex_stack.push(hex_dict)
      else:
            hex_stack.push(str(remainder))
      decimal_num = decimal_num // 16

    hex_num = ""
    while not hex_stack.is_empty():
      hex_num += hex_stack.pop()

    return hex_num

decimal_num = 2623
hex_num = decimal_to_hex(decimal_num)
print(hex_num)


在这个示例中,我们定义了一个名为Stack的类来实现顺序栈。我们使用一个字典来存储十六进制数字和相应的字母。然后,我们将十进制数转换为十六进制数并将其推入栈中。最后,我们将栈中的元素弹出并连接到一个字符串中,以获得最终的十六进制数。

陶远航 发表于 2023-9-24 21:15:02

当然可以使用 Python 编程语言来实现顺序栈转换十进制为十六进制。以下是一个示例代码:

class Stack:
    def __init__(self):
      self.items = []
   
    def is_empty(self):
      return len(self.items) == 0
   
    def push(self, item):
      self.items.append(item)
   
    def pop(self):
      if not self.is_empty():
            return self.items.pop()
   
    def peek(self):
      if not self.is_empty():
            return self.items[-1]
   
    def size(self):
      return len(self.items)


def decimal_to_hexadecimal(decimal):
    stack = Stack()
    hex_digits = "0123456789ABCDEF"

    # 辗转相除法将十进制数转换为十六进制
    while decimal > 0:
      remainder = decimal % 16
      stack.push(hex_digits)
      decimal = decimal // 16

    # 弹出栈中的元素构建最终的十六进制字符串
    hexadecimal = ""
    while not stack.is_empty():
      hexadecimal += stack.pop()

    return hexadecimal


# 测试
decimal_number = 2623
hex_number = decimal_to_hexadecimal(decimal_number)
print(hex_number)# 输出 A3F


上述代码中,Stack 类实现了一个简单的顺序栈,包含了常用的栈操作方法。decimal_to_hexadecimal 函数接受一个十进制数作为输入,并将其转换为十六进制形式。

运行代码后,输出结果为 A3F,与预期结果一致。希望对你有所帮助!
如果问题已经解决,请设置最佳答案

Mike_python小 发表于 2023-9-24 21:15:21

> 问题:请编程实现用顺序栈将十进制转换为十六进制。输入一个十进制数例如2623,输出A3F。

以下是用Python实现顺序栈将十进制数转换为十六进制的代码:


class Stack:
    def __init__(self):
      self.items = []

    def is_empty(self):
      return len(self.items) == 0

    def push(self, item):
      self.items.append(item)

    def pop(self):
      if not self.is_empty():
            return self.items.pop()

    def peek(self):
      if not self.is_empty():
            return self.items[-1]

def decimal_to_hex(decimal):
    hex_table = "0123456789ABCDEF"
    stack = Stack()

    while decimal > 0:
      remainder = decimal % 16
      stack.push(remainder)
      decimal = decimal // 16

    hexadecimal = ""

    while not stack.is_empty():
      hexadecimal += hex_table

    return hexadecimal

# 测试转换
decimal_num = 2623
hexadecimal_num = decimal_to_hex(decimal_num)
print("转换结果:", hexadecimal_num)


在上述代码中,我们首先定义了一个Stack类,模拟了顺序栈的基本操作,包括判断是否为空,入栈,出栈和查看栈顶元素等。然后,我们实现了decimal_to_hex函数,该函数接受一个十进制数作为输入,并使用顺序栈将其转换为十六进制形式。最后,我们使用decimal_to_hex函数将十进制数2623转换为十六进制,并打印转换结果。

请注意,以上代码仅是一种实现方式,你可以根据需要进行修改和优化。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
回答可能有误,多多谅解!
页: [1]
查看完整版本: 用顺序栈转换十六进制,十进制