Элементы в списке 6495 i.e, первые 5 были сдвинуты, затем 9 и так далее. Теперь я хочу поп 5 (я знаю, что первые 6 должны быть в соответствии с FILO), то есть в обратном порядке. Элемент popped равен 5 в первый и второй раз, когда я выполняю операцию pop. Temp - это локальная переменная, поэтому, даже если я освобожу ее в поп-функции, она не будет освобождена в основном, если бы я должен был отображать основные элементы? Это правда? Но в любом случае я сделал свой cout в самой поп-операции но он все еще не работает? Если я использую display fn. после поп он переходит в бесконечный цикл.Операция pop pop pop with связанный список
#include <iostream>
#include <cstdlib>
#include <climits>
using namespace std;
struct stackNode
{
int data;
struct stackNode *next;
};
int is_emp(struct stackNode* head)
{
if(head==NULL)
return 0;
else
return 1;
}
void push(struct stackNode** head,int data)
{
struct stackNode* current =(struct stackNode*)malloc(sizeof(struct stackNode));
current->data=data;
current->next=NULL;
current->next=*head;
*head=current;
}
int pop(struct stackNode** head)
{
int ele;
struct stackNode* temp=*head;
if(is_emp(*head)==NULL)
{
cout<<"Underflow";
return INT_MIN;
}
else
{
while(temp->next!=NULL)
{
temp=temp->next;
}
cout<<"Popped ele:"<<temp->data<<endl;
free(temp);
temp=NULL;
}
}
void disp(struct stackNode* head)
{
while(head!=NULL)
{
cout<<head->data<<endl;
head=head->next;
}
}
int main()
{
struct stackNode* head=NULL;
push(&head,5);
push(&head,9);
push(&head,4);
push(&head,6);
disp(head);
pop(&head);
disp(head);
return 0;
}
Почему вы используете 'free' в коде на C++? Почему вы не используете один из стандартных шаблонов для этого? –
@EdHeal Это не вызывает никаких проблем (не предупреждение). Что мне тогда использовать? – Rooney10
@ Rooney10 По крайней мере, вы ничего не выделяете, так что должно быть 'free()' 'd там? –