Реализация стека на основе односвязного списка - C (СИ)

Узнай цену своей работы

Формулировка задачи:

typedef int Data;
typedef struct Stack * pStack;
 
pStack CreateStack(Data val);
int    Push(pStack This, Data val);
void   Pop(pStack This);
Data   GetTop(pStack This);
void   DeleteStack(pStack This);
 
struct Stack
{
    Data value;
    struct Stack * prev;
};
pStack CreateStack(Data val)
{
    pStack pst;
    pst = (pStack) malloc(sizeof(struct Stack));
    if (pst == NULL)
        return NULL;
    pst->prev = NULL;
    pst->value = val;
    return pst;
}
 
int Push(pStack This, Data val)
{
    pStack pst;
    if (This == NULL)
        return 0;
    pst = (pStack) malloc(sizeof(struct Stack));
    if (pst == NULL)
        return 0;
    pst->prev  = This;
    pst->value = val;
    This = pst;
    return 1;
}
 
void Pop(pStack This)
{
    pStack pst;
    if (This == NULL)
        return;
    pst = This;
    This = This->prev;
    free(pst);
}
 
Data GetTop(pStack This)
{
    if (This != NULL)
        return This->value;
    return -1;
}
 
void DeleteStack(pStack This)
{
    while (This != NULL)
        Pop(This);
}
Может кто-нибудь помочь? Походу я совсем отупел - не могу реализовать стек.

Решение задачи: «Реализация стека на основе односвязного списка»

textual
Листинг программы
int CMyStack::Pop()
{
        if (isEmpty())
        {
                return -1;
        }
        int temp = top->d;
        Node *pv = top;
        top = top->p;
        delete pv;
        return temp;
}

Объяснение кода листинга программы

  1. CMyStack::Pop() - это метод, который реализует функцию Pop стека.
  2. if (isEmpty()) - это проверка на пустоту стека. Если стек пуст, метод возвращает -1.
  3. int temp = top->d; - это сохранение значения, хранящегося на вершине стека, в переменной temp.
  4. *Node pv = top;** - это присвоение указателя на узел, находящийся на вершине стека, переменной pv.
  5. top = top->p; - это обновление указателя на следующий узел в стеке.
  6. delete pv; - это освобождение памяти, выделенной под узел, находящийся на вершине стека.
  7. return temp; - это возврат значения, хранящегося в переменной temp, то есть значения, хранящегося на вершине стека, перед его удалением.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.857 из 5
Похожие ответы