Создал линейный список и заполнил числами от 0 до 10. Как удалить элемент списка, значение которого равно 5? Пожалуйста, подскажите
Вот мой код
#include <iostream>
using namespace std;
int n=0;
int i=0;
struct List{
int id;
List *Next;
};
List *sp = new List;
void fill_list(){
List *tmp = new List;
tmp = sp;
while (i < 11){
tmp->id = i;
tmp->Next = new List;
if (n==0)
sp = tmp;
if (tmp->Next!=NULL)
tmp = tmp->Next;
n++;
i++;
}
}
void show(){
List *tmp = new List;
tmp = sp;
for (int i=0;i<n;i++){
cout << tmp->id << " ";
tmp = tmp->Next;
}
cout << endl;
}
void del(){
List *tmp = new List;
tmp = sp;
int e = 5;
int n0 = n;
for (int i = 0; i<n0; i++){
if (e == tmp -> Next -> id){
}
}
}
int main() {
setlocale(LC_ALL, "Russian");
fill_list();
int l=0;
while(1) {
cout << "1 - вывод, 2 - удалить элемент, 3 - выход" << endl;
cin >> l;
if(l==1){
show();
}
if(l==2){
del();
}
if(l==3)
return 0;
}
}
fill_list - заполняет список; show - выводит на экран; del - должен удалить элемент
Сначала правильно перетасовать ссылки (то, что указывало на удаляемый элемент, должно указывать на следующий за ним (тот, куда указывал удаляемый)), а потом просто вызвать delete
.
#include <iostream>
#include <Windows.h>
using namespace std;
struct List
{
int id;
List *Next;
};
List *sp = NULL;
void fill_list()
{
List *tmp, *last = NULL;
for (int i = 0; i < 11; i++)
{
tmp = new List;
tmp->id = i;
tmp->Next = NULL;
if (sp == NULL)
sp = tmp;
else
last->Next = tmp;
last = tmp;
}
}
void show()
{
for (List *tmp = sp; tmp; tmp=tmp->Next)
cout << tmp->id << " ";
cout << endl;
}
void del(int e)
{
List *prev = NULL, *tmp;
for (tmp = sp; tmp; prev=tmp,tmp=tmp->Next)
{
if (e == tmp->id)
{
if (tmp == sp)
sp = tmp->Next; //при удалении первого элемента
else
prev->Next = tmp->Next; //при удалении элемента посередине
prev = tmp->Next;
delete tmp;
tmp = prev;
if (NULL == tmp)
break; //при удалении последнего элемента
}
}
}
void delQueue(void)
{
List *next, *tmp;
for (tmp = sp; tmp; tmp = tmp->Next)
{
next = tmp->Next;
delete tmp;
tmp = next;
}
}
int main() {
SetConsoleCP(1251);
SetConsoleOutputCP(1251);
fill_list();
int l=0;
while (1)
{
cout << "1 - вывод, 2 - удалить элемент, 3 - выход" << endl;
cin >> l;
switch (l)
{
case 1:
show();
break;
case 2:
del(5);
break;
case 3:
return 0;
}
}
delQueue();
return 0;
}
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Нужен способ вытаскивать инфу из msi пакетаНашел решение в инете, на его основе сделал класс
Все работало буквально 10 минут назадСоздал новую сцену, все так же работало, но потом что-то пошло не так
Помогите самоваруЕсть два метода, которые по отдельности возвращают координаты х и у соотвественно