Свързан Стек

18.Свързан Стек

typedef int INFO_TYPE
struct Stack_el
{
    INFO_TYPE info;
    Stack_el *link;
};

За определянe указател към върха на стека( указател към указател ). Само указател не може, защото функцията като добави елемент тя променя указателя към върха на стека, ако се програмира на С друг начин няма, но за С++ може със псевдоним.

void push( Stack_el **t, INFO_TYPE x )
{
    Stack_el *p;
    if ( ( p = new Stack_el ) == NULL ) // това на С не върви..
    {
        cout << “\n Няма свободна памет.. \n”;
        exit(1);
    }
    p->info = x;
    p->link = *t;
    *t  = p;
}
 
INFO_TYPE pop(Stack_el **t  )
{
    Stack_el * p;
    INFO_TYPE x;
    if ( *t == NULL )
    {
        cout << “\nСтекът е празен\n ”;
        exit(1);
    }
    p = *t;
    *t = p->link;
    x = p->info;
    delete p;
    return x;
}
 
void main()
{
    INFO_TYPE x = 3, y;
    Stack_el *stack = NULL; // създаване на празен стек..
    push( &stack, x );
    y = pop( &stack );
}

< картинка.. >
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License