Форум программистов, компьютерный форум, киберфорум
Наши страницы

Удалить элемент из односвязного списка - 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...
C++ Использование битовых операторов для bool
Столкнулся с кодом где if (p.y > point2dMouse.y) ^ (prev.y > point2dMouse.y) - допустим ли такой код, является ли он кросплатформенным и еще я слышал что в разных компиляторах разное значение...
C++ Собственный динамический массив (аналог std::vector) http://www.cyberforum.ru/cpp-beginners/thread775731.html
Вот возникла идея написать что-то на подобии вектора, но возникла проблема что не так с kallocSize? Почему компилятор ее не пропускает? А когда я ее заменю просто числом то все в порядке. ------...
C++ Структура: стек из произвольного количества элементов Составьте программу, которая создает стек из произвольного количества элементов. Информационная часть динамического элемента должна состоять из двух целых чисел. Организуйте обработку каждого... подробнее

Показать сообщение отдельно
Pein95
3 / 3 / 0
Регистрация: 02.01.2013
Сообщений: 116

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

31.01.2013, 01:24. Просмотров 738. Ответов 8
Метки (Все метки)

Есть односвязный список
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;
    }
но тут программа почему то вылетает никак не пойму почему. Отладчиком пользовался, но не смог найти свою ошибку.
Буду благодарен за помощь)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.