Как удалить элемент из связанного списка
Я попытался создать функцию удаления, но когда я запускаю программу и удаляю элемент, то после отображения он показывает мне мусорное значение, я не знаю, что я делаю не так
Что я уже пробовал:
#include<iostream> using namespace std; class node{ int x; node *next; public: void set(int x) { this->x=x; } int get() { return x; } void setnext(node *next) { this->next=next; } node *getnext() { return next; } }; class list{ int size,elenum; node *head,*current; public: list() { head=new node(); head->setnext(NULL); size=0; elenum=0; current=new node(); current=NULL; } void create() { int v; cout<<"Enter value :"; cin>>v; node *newnode=new node(); newnode->set(v); if(current!=NULL) { newnode->setnext(NULL); current->setnext(newnode); current=newnode; } else { newnode->setnext(NULL); head->setnext(newnode); current=newnode; } size++; } void insert(int pos) { int val; cout<<"Enter value :"; cin>>val; current=head->getnext(); node *newnode=new node(); newnode->set(val); for(int i=1;i<=pos;i++) { if(i=pos) { newnode->setnext(current->getnext()); current->setnext(newnode); current=newnode; } current=current->getnext(); } elenum++; } void remove(int pos) { node *temp=new node(); current=head->getnext(); for(int i=1;i<=pos;i++) { if(i=pos) { temp=current; current->setnext(current->getnext()); delete temp; } current=current->getnext(); } elenum--; } int find(int x,int si) { current=head->getnext(); for(int i=1;i<=size;i++) { if(x=current->get()) { return i; } } return 0; } int length() { return size; } int actlength() { int sum=size+elenum; return sum; } void display() { if(current!=NULL) { cout<<current->get(); } } void start() { current=head->getnext(); } void next() { current=current->getnext(); } }; int main() { list l1; int n1,n2,num; int ans,pos; cout<<"How many elements do you want to enter :"; cin>>num; for(int i=1;i<=num;i++) { l1.create(); } do { cout<<"\n1.Insert\n2.Remove\n3.Size of list\n4.Size after update\n5.Find\n6.Display\n7.End"<<endl; cout<<"Enter your choice :"; cin>>ans; if(ans==1) { cout<<"Enter position where you want to enter :"; cin>>pos; l1.insert(pos); } else if(ans==2) { cout<<"Enter position from which you want to remove your element :"; cin>>pos; l1.remove(pos); } else if(ans==3) { cout<<"Size is "<<l1.length(); } else if(ans==4) { cout<<"Size after some modification done by you "<<l1.actlength(); } else if(ans==5) { n2=l1.actlength(); cout<<"Enter the value you want to enter :"; cin>>num; int n1=l1.find(num,n2); if(n1!=0) { cout<<"Your element was found at "<<n1<<endl; } else { cout<<"Your element is not in the list !"<<endl; } } else if(ans==6) { n2=l1.actlength(); l1.start(); for(int i=1;i<=n2;i++) { l1.display(); cout<<endl; l1.next(); } } else { break; } }while(1); return 0; }