明日の宿題があり、文字を節約する動的な(サイズ変更可能な)スタックを作成するように求められます。
このことは私を夢中にさせ、一日中それを続けてきました。stdlibを使用して実行しました。しかし、mallocなしでメモリを割り当てる方法を理解できないようです。助けていただければ幸いです。これらは私が(stdlibで)使用したいくつかのコードスニペットです:
struct STACK
{
int size;
int capacity;
char *memory;
int folder_number;
};
typedef struct STACK stack;
私のメインは次のように始まります:
int main()
{
stack mystack;
stack_init(&mystack);
スタック関数の初期化:
void stack_init(stack *s)
{
s->size=1;
s->capacity=INITIAL_CAPACITY;
s->memory=malloc(s->capacity);
s->memory[0]='\0';
s->folder_number=1;
}
私は自分のプログラムにあらゆる種類の関数を持っており、スタックに新しいcharを挿入するときに、最大容量に達しているかどうかを確認します。最大容量に達している場合は、次の関数を呼び出します。
void double_memory(stack* s)
{
char *tmp = malloc((s->capacity)*2);
for (int i=0; i<(s->capacity); i++)
tmp[i]=s->memory[i];
free(s->memory);
s->capacity *= 2;
s->memory=tmp;
}
今、私は少なくとも6時間続けてそれを行う方法を見つけようとして(stdlib.hを使用せずに)、グーグルでたくさん検索しましたが、成功しませんでした。どんな助けやアドバイスも本当にあります!! 感謝。
事前にどうもありがとうございました。
編集:私は約2か月前に大学に入学しましたが、プラットフォームなどについてはわかりません。最後に学んだ2つのことは、ポインターと、関数について単に学んだmalloc、b4に関する小さな情報です。その前に、VERRYの基本的なコーディング。