Я пытаюсь реализовать простой стек в c с указателями и структурой, но я думаю, что у меня есть проблема с pu sh или print. Моя программа печатает только первый узел.
Если кто-то может помочь мне решить эту проблему
Вот мой код
stack.h
/***********************************************************************
* stack.h
***********************************************************************/
#include <stdbool.h>
#ifndef _STACK_H_
#define _STACK_H_
typedef struct Stack{
int value;
struct Stack* next;
}Stack;
Stack initStack();
bool push (Stack* s, int n);
int pop (Stack* s);
bool stackEmpty (Stack s);
void printStack (Stack s);
#endif
стек. c
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include "stack.h"
Stack initStack(){
Stack s = {0, NULL};
return s;
}
bool push (Stack* s, int n){
if (stackEmpty(*s)){
s->value = n;
return true;
}else{
Stack stack = {n, s};
s = &stack;
return true;
}
return false;
}
int pop (Stack* s){
int value = s->value;
s = s->next;
return value;
}
bool stackEmpty (Stack s){
if (s.value == 0 && s.next == NULL)
return true;
return false;
}
void printStack (Stack s){
Stack* b = &s;
printf("Stack : \n");
while(b != NULL){
printf("%d\n", b->value);
b = b->value;
}
основной
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <stdbool.h>
#include "stack.h"
int main (int argc, char** argv) {
Stack stack1 = initStack();
push(&stack1, 5);
printStack(stack1);
}