Функция foundel(List*&,int) совершает удаление n-го элемента, работает неправильно, знаю в чем ошибка, но исправить не получается.
#include "stdafx.h"
#include <iostream>
using namespace std;
struct List {
int x;
List *next;
};
void buildlist(List **lst, int n) {
List *ptr = *lst;
for (int i = 0; i < n; ++i) {
List *tmp = new List;
cin >> tmp->x;
tmp->next = (*lst);
(*lst) = tmp;
}
}
void print(List *lst) {
cout << endl;
while (lst) {
cout << lst->x << ' ';
lst = lst->next;
}
}
void foundel(List *&lst, int n) {
List *ptr = lst;
List *temp = lst;
while (n--) {
ptr = temp;
temp = temp->next;
}
ptr->next = temp->next;
delete temp;
}
void del(List *&lst) {
List *pdel = lst;
while (lst) {
lst = lst->next;
delete pdel;
pdel = lst;
}
}
int main() {
setlocale(LC_ALL, "RUS");
List *lst, *beg;
int n = 0, f = 0;
beg = lst = NULL;
cout << "Введите размер списка: "; cin >> n;
buildlist(&lst, n);
print(lst);
cout << "\n=================" << endl
<< "Какой элемент хотите удалить(посчету): ";
cin >> f;
foundel(lst, f);
print(lst);
del(lst);
cout << endl;
system("pause");
return 0;
}
Вот я исправил, но скорее это какой-то подогнанный вариант, если есть более грамотная запись, хочется посмотреть
void foundel(List *&lst, int n) {
List *ptr = lst;
List *temp = lst;
for (int i = 0; i < n - 1; i++) {
ptr = temp;
temp = temp->next;
}
if (n == 1)
lst = lst->next;
ptr->next = temp->next;
delete temp;
}
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Всем доброго времени суток
Нужно изменить функцию user_loop() чтобы определить угол наклона комнатыВ комнате криволинейная поверхность