使用结构体的 C 堆栈实现

标签 c data-structures struct stack

我的教授没有解释太多,只是给出了要完成的任务。我在这里看到类似的任务Push Item into Stack with C ,但我希望我能看到完整的代码,因为我不明白 top 和 node 指的是什么。

typedef struct Stack
    {
        int* array;
        int size;

    }Stack;

void initStack(Stack *s)
{
    s->size = 0;
    s->array = NULL;

}

不要更改此函数中的参数。我花了几个小时阅读不同的文章,但我似乎仍然无法理解它是如何工作的以及如何正确地提高大小,在输入值时分配内存以及如何将值堆叠在一起。谢谢。

void push(Stack *s, int data){

    Stack* m = (Stack*)malloc(sizeof(Stack));
    s = (Stack*)malloc(sizeof(Stack));

    m->array = value;
    m->size = 1;
    s = m;

    printf("%d %d",s->size,s->array);
}

最佳答案

功能

void push(Stack *s, int data){

    Stack* m = (Stack*)malloc(sizeof(Stack));
    s = (Stack*)malloc(sizeof(Stack));

    m->array = value;
    m->size = 1;
    s = m;

    printf("%d %d",s->size,s->array);
}

没有任何意义,并且由于此声明而具有未定义的行为

m->array = value;

由于此语句导致内存泄漏

s = m;

你需要的是这样的

int push( Stack *s, int data )
{
    int *p = realloc( s->array, ( s->size + 1 ) * sizeof( int ) );
    int success = p != NULL;

    if ( success )
    {
        s->array = p;
        s->array[s->size] = data;
        ++s->size;
    }

    return success;
}

这是一个演示程序

#include <stdio.h>
#include <stdlib.h>

typedef struct Stack
    {
        int* array;
        int size;

    }Stack;

void initStack(Stack *s)
{
    s->size = 0;
    s->array = NULL;

}

int push( Stack *s, int data )
{
    int *p = realloc( s->array, ( s->size + 1 ) * sizeof( int ) );
    int success = p != NULL;

    if ( success )
    {
        s->array = p;
        s->array[s->size] = data;
        ++s->size;
    }

    return success;
}


int main(void) 
{
    Stack s;

    initStack( &s );

    push( &s, 10 );

    return 0;
}

关于使用结构体的 C 堆栈实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58877637/

相关文章:

c# - ElasticSearch是否使用ElasticProperty支持动态字段?

algorithm - 合流持久化的实际应用

data-structures - 链表有什么用?

swift - 如何检查结构的实例本身是否是另一个结构的实例

arrays - 如何比较结构和数组的值?

c - 当多线程程序创建新进程时会发生什么?

c - C中两个数组的交集函数

c - Windows 32 位和 64 位之间的代码差异

c - 使用按位运算符在 C 中返回最负的二进制补码数

c++ - 使用 ctypes 将结构传递给 native 库时遇到问题