Ich mache eine Schulaufgabe, ich habe ich in 2 Probleme gerannt. Ich muss Stacks mit Arrays simulieren. Meine aktuellen Code ist wie folgt: (! Empty (MyStack))C: Stack Element durch einen Funktionsaufruf überschrieben
#include <stdlib.h>
#include <stdio.h>
typedef struct {
int capacity;
int * array;
int size;
} stack_tt;
int pop(stack_tt * stack_p);
void push(stack_tt * stack_p, int value);
int top(stack_tt * stack_p);
stack_tt * newStack(void);
int empty(stack_tt * stack_p);
int main() {
stack_tt * myStack = newStack();
push(myStack, 123);
push(myStack, 99);
push(myStack, 4444);
while (!empty(myStack)) {
int value;
value = pop(myStack);
printf("popped: %d\n", value);
}
return 0; }
stack_tt * newStack(){
stack_tt * newS = malloc(sizeof(stack_tt) * 20);
(*newS).capacity = 1;
(*newS).size = 0;
return newS;
}
void push(stack_tt * stack_p, int value){
if ((*stack_p).size >= (*stack_p).capacity) {
(*stack_p).capacity*=2;
//realloc(stack_p, stack_p->capacity * sizeof(stack_tt));
}
(*stack_p).array = &value;
(*stack_p).size++;
}
int pop(stack_tt * stack_p){
(*stack_p).size--;
int fap = *(*stack_p).array;
return fap;
}
int empty(stack_tt * stack_p){
if ((*stack_p).size >= 1)
return 0;
return 1;
}
Faust, wenn ich die Linie während nennen es den Wert in meinem Array ändert sich auf 1
zweitens bin ich Ich bin nicht in der Lage, einzelne Werte in meinem Array zu ändern, wenn ich versuche, Dinge wie: (* stack_p) .array [0] = Wert; Es weiß nicht, wo in der Erinnerung zu suchen.
stack_tt * newS = malloc(sizeof(stack_tt));
aber Sie müssen: Ich hoffe, dass jemand in der Lage ist, mir zu helfen :)
ich das versucht habe, ich mich den Fehler gibt: 'Thread 1: EXC_BAD_ACCESS (code = 1, Adresse = 0x0)' – Klopper
@ Klopper Natürlich sind die Beispiele, auf die ich hingewiesen habe, nicht die einzigen Probleme. Es ist nicht möglich, jeden Fehler aufzuzeigen, weil der Code konzeptionell falsch ist. Das gesamte Projekt muss neu geschrieben werden. Verwenden Sie die Beispiele, die ich als Leitfaden gegeben habe. – 2501
Danke, ich sehe jetzt :) Das war eine große Hilfe! – Klopper