//Стек, реализованный с помощью структуры "Узел", которая хранит значение
//(в нашем примере типа int) и указатель на следующий узел.
//Это неэффективная реализация, которая требует удаления и выделения
//памяти под узел при каждом вызове операции push и pop.
#include <stdlib.h>
#include <stdio.h>
#include <conio.h>
#define STACK_OVERFLOW 3
#define STACK_UNDERFLOW 4
/**
Узел ссылается на предыдущий элемент стека.
Если узел ссылается на NULL, то это последний элемент стека
*/
typedef struct Node {
int value;
struct Node *next;
} Node;
/**
Создаём новый узел и делаем его вершиной стека.
*/
void push(Node *head, int val) {
Node *tmp = NULL;
if (!(tmp
= (Node
*) malloc(sizeof(Node
)))) { }
tmp->next = head->next;
tmp->value = head->value;
head->value = val;
head->next = tmp;
}
/**
Возвращаем значение текущей вершиныи удаляем её
*/
int pop(Node **head) {
Node *tmp = (*head)->next;
int val = (*head)->value;
if ((*head)->next == NULL) {
}
(*head) = tmp;
return val;
}
/**
Удаляем все вершины
*/
void freeList(struct Node **head) {
Node *tmp = NULL;
while ((*head)->next) {
tmp = (*head)->next;
(*head) = tmp;
}
}
/**
Для того, чтобы получить последний элемент, необходимо
по цепочке пройти до него
*/
Node* getLast(struct Node *head) {
Node* tmp;
tmp = head -> next;
while (tmp) {
tmp = tmp -> next;
}
return tmp;
}
void main(){
Node *head = NULL;
int i;
head
= (Node
*)malloc(sizeof(Node
)); head -> next = NULL;
push(head, 100);
push(head, 300);
push(head, 200);
push(head, 1000);
while (head->next) {
}
}
Ly/QodGC0LXQuiwg0YDQtdCw0LvQuNC30L7QstCw0L3QvdGL0Lkg0YEg0L/QvtC80L7RidGM0Y4g0YHRgtGA0YPQutGC0YPRgNGLICLQo9C30LXQuyIsINC60L7RgtC+0YDQsNGPINGF0YDQsNC90LjRgiDQt9C90LDRh9C10L3QuNC1IAovLyjQsiDQvdCw0YjQtdC8INC/0YDQuNC80LXRgNC1INGC0LjQv9CwIGludCkg0Lgg0YPQutCw0LfQsNGC0LXQu9GMINC90LAg0YHQu9C10LTRg9GO0YnQuNC5INGD0LfQtdC7LiAKLy/QrdGC0L4g0L3QtdGN0YTRhNC10LrRgtC40LLQvdCw0Y8g0YDQtdCw0LvQuNC30LDRhtC40Y8sINC60L7RgtC+0YDQsNGPINGC0YDQtdCx0YPQtdGCINGD0LTQsNC70LXQvdC40Y8g0Lgg0LLRi9C00LXQu9C10L3QuNGPIAovL9C/0LDQvNGP0YLQuCDQv9C+0LQg0YPQt9C10Lsg0L/RgNC4INC60LDQttC00L7QvCDQstGL0LfQvtCy0LUg0L7Qv9C10YDQsNGG0LjQuCBwdXNoINC4IHBvcC4gCiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxjb25pby5oPgogCiNkZWZpbmUgU1RBQ0tfT1ZFUkZMT1cgIDMKI2RlZmluZSBTVEFDS19VTkRFUkZMT1cgNAogCi8qKgrQo9C30LXQuyDRgdGB0YvQu9Cw0LXRgtGB0Y8g0L3QsCDQv9GA0LXQtNGL0LTRg9GJ0LjQuSDRjdC70LXQvNC10L3RgiDRgdGC0LXQutCwLgrQldGB0LvQuCDRg9C30LXQuyDRgdGB0YvQu9Cw0LXRgtGB0Y8g0L3QsCBOVUxMLCDRgtC+INGN0YLQviDQv9C+0YHQu9C10LTQvdC40Lkg0Y3Qu9C10LzQtdC90YIg0YHRgtC10LrQsAoqLwp0eXBlZGVmIHN0cnVjdCBOb2RlIHsKICAgIGludCB2YWx1ZTsKICAgIHN0cnVjdCBOb2RlICpuZXh0Owp9IE5vZGU7CiAKLyoqCtCh0L7Qt9C00LDRkdC8INC90L7QstGL0Lkg0YPQt9C10Lsg0Lgg0LTQtdC70LDQtdC8INC10LPQviDQstC10YDRiNC40L3QvtC5INGB0YLQtdC60LAuCiovCnZvaWQgcHVzaChOb2RlICpoZWFkLCBpbnQgdmFsKSB7CiAgICBOb2RlICp0bXAgPSBOVUxMOwogICAgaWYgKCEodG1wID0gKE5vZGUqKSBtYWxsb2Moc2l6ZW9mKE5vZGUpKSkpIHsKICAgICAgICBleGl0KFNUQUNLX09WRVJGTE9XKTsKICAgIH0KICAgIHRtcC0+bmV4dCAgPSBoZWFkLT5uZXh0OwogICAgdG1wLT52YWx1ZSA9IGhlYWQtPnZhbHVlOwogICAgaGVhZC0+dmFsdWUgPSB2YWw7CiAgICBoZWFkLT5uZXh0ICA9IHRtcDsKfQogCi8qKgrQktC+0LfQstGA0LDRidCw0LXQvCDQt9C90LDRh9C10L3QuNC1INGC0LXQutGD0YnQtdC5INCy0LXRgNGI0LjQvdGL0Lgg0YPQtNCw0LvRj9C10Lwg0LXRkQoqLwppbnQgcG9wKE5vZGUgKipoZWFkKSB7CiAgICBOb2RlICp0bXAgPSAoKmhlYWQpLT5uZXh0OwogICAgaW50IHZhbCA9ICgqaGVhZCktPnZhbHVlOwogICAgaWYgKCgqaGVhZCktPm5leHQgPT0gTlVMTCkgewogICAgICAgIGV4aXQoU1RBQ0tfVU5ERVJGTE9XKTsKICAgIH0KICAgIGZyZWUoKmhlYWQpOwogICAgKCpoZWFkKSA9IHRtcDsKICAgIHJldHVybiB2YWw7Cn0KIAovKioK0KPQtNCw0LvRj9C10Lwg0LLRgdC1INCy0LXRgNGI0LjQvdGLCiovCnZvaWQgZnJlZUxpc3Qoc3RydWN0IE5vZGUgKipoZWFkKSB7CiAgICBOb2RlICp0bXAgPSBOVUxMOwogICAgd2hpbGUgKCgqaGVhZCktPm5leHQpIHsKICAgICAgICB0bXAgPSAoKmhlYWQpLT5uZXh0OwogICAgICAgIGZyZWUoKmhlYWQpOwogICAgICAgICgqaGVhZCkgPSB0bXA7CiAgICB9Cn0KIAovKioK0JTQu9GPINGC0L7Qs9C+LCDRh9GC0L7QsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0L/QvtGB0LvQtdC00L3QuNC5INGN0LvQtdC80LXQvdGCLCDQvdC10L7QsdGF0L7QtNC40LzQvgrQv9C+INGG0LXQv9C+0YfQutC1INC/0YDQvtC50YLQuCDQtNC+INC90LXQs9C+CiovCk5vZGUqIGdldExhc3Qoc3RydWN0IE5vZGUgKmhlYWQpIHsKICAgIE5vZGUqIHRtcDsKICAgIHRtcCA9IGhlYWQgLT4gbmV4dDsKICAgIHdoaWxlICh0bXApIHsKICAgICAgICB0bXAgPSB0bXAgLT4gbmV4dDsKICAgIH0KICAgIHJldHVybiB0bXA7Cn0KIAp2b2lkIG1haW4oKXsKICAgIE5vZGUgKmhlYWQgPSBOVUxMOwogICAgaW50IGk7CiAgICAgCiAgICBoZWFkID0gKE5vZGUqKW1hbGxvYyhzaXplb2YoTm9kZSkpOwogICAgaGVhZCAtPiBuZXh0ID0gTlVMTDsKIAogICAgcHVzaChoZWFkLCAxMDApOwogICAgcHVzaChoZWFkLCAzMDApOwogICAgcHJpbnRmKCIlZFxuIiwgcG9wKCZoZWFkKSk7CiAgICBwdXNoKGhlYWQsIDIwMCk7CiAgICBwdXNoKGhlYWQsIDEwMDApOwogCiAgICB3aGlsZSAoaGVhZC0+bmV4dCkgewogICAgICAgIHByaW50ZigiJWRcbiIsIHBvcCgmaGVhZCkpOwogICAgfQogCiAgICBmcmVlKGhlYWQpOwogICAgZ2V0Y2goKTsKfQ==