Форум программистов, компьютерный форум CyberForum.ru

Удалить элемент из односвязного списка - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Заголовочный фаил <algorithm> (объясните что это такое) http://www.cyberforum.ru/cpp-beginners/thread775764.html
Здравствуйте, товарищи! Что такое #include <algorithm>? Какие она имеет функции или макросы? И если можно их предназначение?
C++ Динамические структуры. Составьте программу, которая создает очередь из произвольного количества элементов Задача 1.Составьте программу, которая создает очередь из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и их среднее значение. http://www.cyberforum.ru/cpp-beginners/thread775751.html
C++ Как обращатся к ресурсу из программы?
Например я хочу добавить ресурс файл text.txt (не будем говорит о целесобразности добавления текстовых файлов в ресурсы, просто для примера) и напишу что-то типа: std::ifstream some_file; char *str=new char , buf; some_file.open("text.txt", std::iose_base::in); // can i get my resource in that way?? for(int i(0);!some_file.eof()&&some_file; i++) { some_file>>buf; str=buf; }...
C++ Использование битовых операторов для bool
Столкнулся с кодом где if (p.y > point2dMouse.y) ^ (prev.y > point2dMouse.y) - допустим ли такой код, является ли он кросплатформенным и еще я слышал что в разных компиляторах разное значение bool.true и bool.false не обязательно 0(ну ноль обязательно) и 1 ?
C++ Собственный динамический массив (аналог std::vector) http://www.cyberforum.ru/cpp-beginners/thread775731.html
Вот возникла идея написать что-то на подобии вектора, но возникла проблема что не так с kallocSize? Почему компилятор ее не пропускает? А когда я ее заменю просто числом то все в порядке. ------ Построение начато: проект: MyVector, Конфигурация: Debug Win32 ------ main.cpp array.cpp Создание кода... main.obj : error LNK2005: "protected: static int const Array::kallocSize"...
C++ Структура: стек из произвольного количества элементов Составьте программу, которая создает стек из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого элемента: печать целых чисел из информационной части и суммы их квадратов. подробнее

Показать сообщение отдельно
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116
31.01.2013, 01:24     Удалить элемент из односвязного списка
Есть односвязный список
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
struct student
{
    char last_name[10];
    char name[10];
    char date[10];
    int exams[5];
    double rate;
};
 
struct Item
{
    student element;
    Item *next;
};
 
int main()
{
 
    ifstream file1("student.txt");
    char str[200];
    double sum=0;
    int index_exam;
 
    Item *list = new Item;
    Item *list_el = new Item;
    list->next = NULL;
    list_el = list;
        //формирование списка
    while (!file1.eof())
    {
        student comp;
        sum = 0.0;
        file1.getline(str,sizeof(str));
        char *pw;
        pw = strtok(str, " ");
        strcpy(comp.last_name,pw);
 
        pw = strtok(NULL," ");
        strcpy(comp.name,pw);
 
        pw = strtok(NULL," ");
        strcpy(comp.date,pw);
 
        for (index_exam = 0; index_exam<5; index_exam++)
        {
            pw = strtok(NULL," ");
 
            char mark[1];
            strcpy(mark,pw);
            comp.exams[index_exam] = atoi(mark);
            sum+=comp.exams[index_exam];
        }
        comp.rate = sum/5.0;
 
        list_el->next = new Item;
        list_el = list_el->next;
        list_el->element = comp;
        list_el->next = NULL;
 
    }
когда список сформирован мне нужно удалить из него те елементы у которых есть две двойки за екзамены, вот функция удаления:
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
void del_el(Item *list)
{
    Item *p = new Item;
    int dva = 0;
    p = list;
    while (1)
    {
        Item *pps = new Item;
        pps = p;
        
        if (!p) break;
        for (int i=0; i<5; i++)
            if (p->element.exams[i] == 2)
                dva++;
                
        if (dva == 2)
        {
            if (!p->next)
            {
                pps->next = NULL;
                break;
            }
            pps->next = p->next;
            delete p;
            p = pps;
        }
        p = p->next;
        dva = 0;
    }
но тут программа почему то вылетает никак не пойму почему. Отладчиком пользовался, но не смог найти свою ошибку.
Буду благодарен за помощь)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 16:23. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru