gpt4 book ai didi

C 数据结构理论与技术 - 同栈中的整数和字符

转载 作者:太空宇宙 更新时间:2023-11-04 00:29:59 26 4
gpt4 key购买 nike

我正在努力将中缀表达式转换为前缀表达式,并决定使用堆栈来保存我的表达式。我正在使用链表方法来实现堆栈并使用以下数据结构:

struct stacknode {
char char_val;
int int_val;
struct stacknode *nextptr;
struct stacknode *prevptr;
};

然后我为 push_int()push_char() 编写了两个不同的 push() 函数。

push_int()'\0' 的值分配给 char_val,然后将该值推送到 int_val.

push_char()-1 的值分配给 int_val,然后将该值推送到 char_val .

请注意,所有使用的整数值都 > 0。

然后我编写了其余的函数来处理这样一个事实,即每个节点中的重要值可能是 int 或 char,使用 '\0' 和 -1 的“否定”值来识别节点是否是“int”节点或“char”节点。

本质上,我想知道我是否对数据结构的思考完全错误。有更好的方法吗?

最佳答案

虽然您的实现没有任何错误,但我认为使用 tagged union 可能更惯用/更明显。 .

然后你可以这样做:

struct StackValue
{
_Bool is_int;
union
{
char c;
int i;
} data;
};

struct StackNode
{
struct StackValue data;
struct StackNode *nextptr, *prevptr;
};

关于C 数据结构理论与技术 - 同栈中的整数和字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24639616/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com