С Новым годом! Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.61/18: Рейтинг темы: голосов - 18, средняя оценка - 4.61
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 12

Удаление элемента из начала списка

10.06.2015, 04:32. Показов 3798. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть список, не могу допетрить, как оформить удаление элемента из начала списка. Помогите, пожалуйста, код есть.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <iostream>
#include <string.h>
#include <stdlib.h>
 using namespace std;
struct Student
{
    char Name[20]; 
    char NameLast[30]; 
    char School[30]; 
    void Input(Student &student); 
    Student *Next; 
};
class List
{
    Student *Head; 
public:
    List():Head(NULL){}; 
    ~List();
    void Add(Student &student);
    void Show();
};
//ФУНКЦИЯ ЗАПОЛНЕНИЯ ДАННЫХ ПО СТУДЕНТУ
void Student::Input(Student &student)
{
    cout<<endl; 
    cout<<"Имя:  "; cin.getline(Name,20); 
    cout<<"Фамилия:  ";cin.getline(NameLast,30); 
    cout<<"Полных лет ";cin>>Age;  
    cin.ignore();
    cout<<"Где учится ";cin.getline(School,30); 
}
List::~List() 
{
        while (Head!=NULL) 
        {
            Student *temp=Head->Next; 
            delete Head; 
            Head=temp; 
        }
}
//ФУНКЦИЯ ДОБАВЛЕНИЯ НОВОЙ СТРУКТУРЫ В СПИСОК
 void List::Add(Student &student)
 {
     Student *temp=new Student; 
     temp->Next=Head; 
       strcpy(temp->Name,student.Name);
       strcpy(temp->NameLast,student.NameLast);
       temp->Age=student.Age;
       strcpy(temp->School,student.School);
     Head=temp; 
 }
//ФУНКЦИЯ КЛАССА LIST ДЛЯ ВЫВОДА СПИСКА НА ЭКРАН
 void List::Show()
 {   Student *temp=Head;
     while (temp!=NULL) 
     {
         cout<<temp->Name<<" "; 
         cout<<temp->NameLast<<", "; 
         cout<<temp->Age<<", "; 
         cout<<temp->School<<endl; 
         temp=temp->Next; 
     }
     cout<<endl;
 }
int main ()
{
 setlocale(LC_ALL, "RUS");
  Student student; 
  int N; 
  List lst; 
    cout<<"N = ";
    cin>>N; 
    cin.ignore(); 
     for (int i=0;i<N;i++)
    {
     student.Input(student); 
     lst.Add(student);
    }
    cout<<endl;
    lst.Show(); 
  system("PAUSE");
 return 0;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.06.2015, 04:32
Ответы с готовыми решениями:

Реализация списка.Удаление хвостового элемента.Поиск элемента
Всем привет,мое задание выглядит так : В класс List&lt;T&gt; из классной работы добавить следующие методы: void addHead(T...

Удаление элемента списка и всего списка
Компилируется, но не работает. Что и как исправить? #include &lt;cstdlib&gt; #include &lt;iostream&gt; #include &lt;cstring&gt; #define M 5 ...

Удаление элемента из списка и поиск элемента
Нужно удалить определенный элемент из списка. Найти элемент в списк и вывести на него всю информацию. Вот код. Не знаю как написать...

4
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
10.06.2015, 05:07
Лучший ответ Сообщение было отмечено HellSing как решение

Решение

Код такой же как в деструкторе, только без цикла.
0
0 / 0 / 0
Регистрация: 28.04.2015
Сообщений: 12
10.06.2015, 09:05  [ТС]
smartpointer, простите, а можете оформить кодом? Действительно сообразить не могу.

Добавлено через 25 минут
Я оформила в таком видео, и код действительно удаляет элемента списка, но последний вошедший в него.
C++
1
2
3
4
5
 void List::Pop()
 {Student *temp=Head->Next; 
            delete Head; 
            Head=temp;
 }
Ввожу:
"Иван Петров 18 МГУ
Сергей Иванов 19 МГУ
Елена Иванова 17 МГУ".
Выводит:
"Иван Петров 18 МГУ
Сергей Иванов 19 МГУ".
0
 Аватар для smartpointer
70 / 64 / 40
Регистрация: 17.02.2014
Сообщений: 265
10.06.2015, 09:13
Все верно вы же удаляете с начала списка а не с конца - то есть аналог стека получился.
1
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
10.06.2015, 09:26
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
template<class X>
X* remove_tail(X* head) {
    X* tail = head;
    if(tail) {
        X* prev = nullptr;
        while(tail->next) {
            prev = tail;
            tail = tail->next;
        }
        if(prev) {
            prev->next = nullptr;
        }
        else {
            head = nullptr;
        }
        delete tail;
    }
    return head;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
10.06.2015, 09:26
Помогаю со студенческими работами здесь

Удаление элемента из списка
Здравствуйте, нужна помощь, программа, выполняющая следующие задания на основе двусвязного списка. Не удается удалить элемент по дате...

Удаление элемента из списка
Нужно удалить из списка элемент, стоящий после элемента на который указывает Р. Очень срочно надо! Заранее спасибо.

Удаление элемента из списка
Нужно удалить всех студентов с оценками 2. Entry *begin = new Entry; int mark=2; Entry *current=begin; while(current){ ...

Удаление элемента из списка
Здравствуйте, нужна помощь, программа, выполняющая следующие задания на основе односвязного списка. Не удается удалить элемент по дате...

Удаление элемента со списка
Вот у меня есть код: #include &quot;stdafx.h&quot; #include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; struct OS { char Name ; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru