Доброго времени суток всем!
Изучаю Си по книгам.
Написал реализацию стека:
#include <stdio.h>
#include <stdlib.h>
typedef struct{
int num;
struct node *next;
} node;
node *push (node *list, int num){
node *end_ptr;
if (list==NULL){
list=malloc(sizeof(node));
list->num=num;
list->next=NULL;
}
else{
end_ptr=malloc(sizeof(node));
end_ptr->num=num;
end_ptr->next=list;
list=end_ptr;
}
//printf("%d\n", list->num);
return list;
}
int pop(node *list){
node *end_ptr;
int popped_val;
end_ptr=list;
popped_val=list->num;
list=list->next;
free(end_ptr);
return popped_val;
}
int main(){
node *list=NULL;
list=push(list, 5);
list=push(list, 6);
list=push(list, 1);
list=push(list, 0);
printf("popped %d\n", pop(list));
while(list!=NULL){
printf("%d\n", list->num);
list=list->next;
}
return 0;
}
Кладу в стек числа 5, 6, 1, 0. Но после вызова функции по удалению элемента, получаю стек с числами 0 и 1. Числа 5 и 6 пропадают.
Подскажите, пожалуйста, что я делаю не так.
Прошу не кидать тапками.
Всем откликнувшимся Большое Спасибо!