我有一個堆棧,它將容納一個BIGINT。 bigint是一個具有char數組的結構,它將保存我們的數字和其他一些值。所以我做了我的堆棧,並且從STDIN一切正常,但是當我嘗試添加一個bigint時,似乎沒有任何東西被添加。這裏是我的push_stack()
代碼:添加指向堆棧的指針C
void push_stack (stack *this, stack_item item) {
if (full_stack (this)){realloc_stack (this);}
this->data[this->size] = strdup(item);
this->size++;
}
這裏是我的stack
結構:
struct stack {
size_t capacity;
size_t size;
stack_item *data;
};
這裏是我的bigint
結構:
struct bigint {
size_t capacity;
size_t size;
bool negative;
char *digits;
};
bigint *new_string_bigint (char *string) {
assert (string != NULL);
size_t length = strlen (string);
bigint *this = new_bigint (length > MIN_CAPACITY ? length : MIN_CAPACITY);
char *strdigit = &string[length - 1];
if (*string == '_') {
this->negative = true;
++string;
}
char *thisdigit = this->digits;
while (strdigit >= string) {
assert (isdigit (*strdigit));
*thisdigit++ = *strdigit-- - '0';
}
this->size = thisdigit - this->digits;
trim_zeros (this);
return this;
}
現在我additon堆棧:
void do_push (stack *stack, char *numstr) {
bigint *bigint = new_string_bigint (numstr);
show_bigint(bigint);
push_stack(stack, bigint);
}
出於某種原因,我的bigint
不會添加到堆棧。任何幫助表示讚賞。
是因爲我在使用strdup嗎? – user1924782
你沒有包含棧定義 –
什麼是'stack_item'?除非它是一個以'char *'結尾的字符串,否則你不能'strdup()'它。 – John3136