[英]C stack implementation using structures
我的教授没有太多解释,只是给出任务来完成。 我在这里看到了类似的任务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;
}
请勿更改此 function 中的参数。 我花了几个小时阅读不同的文章,但我似乎仍然无法理解它是如何工作的以及如何正确地提高大小、在输入值时分配 memory 以及如何将值堆叠在一起。 谢谢你。
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);
}
function
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;
以及由于此声明导致的 memory 泄漏
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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.