Удаление элемента в стеке c++ [закрыт]

90
03 июля 2021, 11:00
Закрыт. Этот вопрос не по теме. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Обновите вопрос так, чтобы он вписывался в тематику Stack Overflow на русском.

Закрыт 1 год назад.

Улучшить вопрос

Есть код:

#include <iostream> 
using namespace std; 
struct Stack { 
  int info; 
  Stack *prev; 
}; 
Stack *push(Stack *top, int info); 
void view(Stack *top); 
void delLast(Stack *top); 
int main() { 
  int k, n; 
  Stack *top = NULL; 
  cout << "Enter the number of elements: " << endl; 
  cin>>n; 
  for (int i = 0; i<n;i++) { 
    cout << "Vvedite elem:\t" << endl;
    cin >> k; 
    top = push(top, k); 
  } 
  delLast(top);
  view(top); 
} 
Stack *push(Stack *top, int info) { 
  Stack *t = new Stack; 
  t->info = info; 
  t->prev = top; 
  return t;  
} 
void view(Stack *top) { 
  Stack *t = top; 
  if (t == NULL) { 
    cout <<  "Stack is empty!"; 
  } 
  while (t != NULL) { 
    cout << t->info <<" "; 
    t= t ->prev; 
  } 
} 
void delLast(Stack *top) {
  Stack *t = top;
  while (t != NULL) {
    if (t->prev == NULL) {
        delete t;
        return;
    }
    t = t-> prev;
  }
} 

Моя функция delLast по задумке должна удалять последний элемент стека. Функция view выводит все элементы после удаления последнего. Вроде бы работает и в то же время вроде бы нет... Последний элемент становится равным 0. Я так полагаю, что функция должна вывести только 2 элемента. Как исправить?

Answer 1
  struct Stack {
  int info;
  Stack *prev;
};
Stack* push(Stack* &top, int info) {
  Stack *t = new Stack;
  t->info = info;
  t->prev = top;
  top = t;
  return top;
}
void view(Stack* &top) {
  Stack *t = top;
  if (t == NULL) {
     cout <<  "Stack is empty!";
  }
  for (Stack* i = top; i != NULL; i = i->prev) {
      std::cout << i->info << ' ';
  }
 }
void delLast(Stack* &top) {
    if (top != NULL) {
        int temp = top->info;
        Stack* Mystack = top;
        top = top->prev;
        delete Mystack;
        std::cout << temp << std::endl;
    }
}
READ ALSO
Передать в type file объекты

Передать в type file объекты

Имеется такой код:

80
Не работает viewport

Не работает viewport

Почему на смартфонах при открытии страница чуть больше и приходится уменьшать? Если для body min-width: 320px все норм, но я хочу, чтобы минимальная...

115
Правильное использование DI и IoC

Правильное использование DI и IoC

Начал изучать принципы DI и работу с IoC контейнерамиВопрос следующего характера: Пусть у меня есть некая библиотека классов MyClassLibrary, там представлены...

312
Программа выключается при запуске, а должна работать постоянно

Программа выключается при запуске, а должна работать постоянно

Написал сервер для чата, который должен работать постоянноНо он почему то выключается при запуске, исключений не бросает

220