Практикум по курсу "Алгоритмизация и программирование". Часть 2. Андрианова А.А - 70 стр.

UptoLike

А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова .
Для добавления создается новый элемент списка (переменная p). Новый
элемент добавляется в начало списка. Для этого он связывается с прежним
первым элементом (p->next=s.head), и заголовок списка изменяется, ука-
зывая на новый элемент (s.head=p).
// определение функции добавления в стек нового элемента
void PushStack(Stack& s, int key)
{
Node* p=new Node;
p->next=s.head;
p->info=key;
s.head=p;
}
При извлечении элемента из стека возможны два случая: стек пуст или
стек не пуст. Поэтому кроме извлекаемого значения приходится формировать
еще и код возврата нашем примере это возвращаемое значение функции).
Код возврата будет равен -1, если стек был пуст, в противном случае он будет
равен 1. Извлекаемое из стека значение будет возвращаться через параметр
функции n. Вершиной стека станет следующий элемент списка, а бывшая
вершина стека будет удалена.
// определение функции извлечения элемента из стека
int PopStack(Stack& s, int& n)
{
// проверка стека на пустоту
if(s.head==NULL) return -1;
n=s.head->info;
Node* p=s.head;
s.head=s.head->next;
delete p;
return 1;
}
Задача 2. Написать функции добавления и извлечения элемента из очере-
ди. Очередь реализовать в виде односвязного списка.
Структура элемента очереди будет той же, что и в задаче 1.
struct Node
{
int info;
Node* next;
};
70
А.А. Андрианова, Л.Н. Исмагилов, Т.М. Мухтарова                      .
    Для добавления создается новый элемент списка (переменная p). Новый
элемент добавляется в начало списка. Для этого он связывается с прежним
первым элементом (p->next=s.head), и заголовок списка изменяется, ука-
зывая на новый элемент (s.head=p).
    // определение функции добавления в стек нового элемента
    void PushStack(Stack& s, int key)
    {
          Node* p=new Node;
          p->next=s.head;
          p->info=key;
          s.head=p;
    }

    При извлечении элемента из стека возможны два случая: стек пуст или
стек не пуст. Поэтому кроме извлекаемого значения приходится формировать
еще и код возврата (в нашем примере – это возвращаемое значение функции).
Код возврата будет равен -1, если стек был пуст, в противном случае он будет
равен 1. Извлекаемое из стека значение будет возвращаться через параметр
функции n. Вершиной стека станет следующий элемент списка, а бывшая
вершина стека будет удалена.
    // определение функции извлечения элемента из стека
    int PopStack(Stack& s, int& n)
    {
          // проверка стека на пустоту
          if(s.head==NULL) return -1;
          n=s.head->info;
          Node* p=s.head;
          s.head=s.head->next;
          delete p;
          return 1;
    }

    Задача 2. Написать функции добавления и извлечения элемента из очере-
ди. Очередь реализовать в виде односвязного списка.
    Структура элемента очереди будет той же, что и в задаче 1.
    struct Node
    {
          int info;
          Node* next;
    };


                                            70