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

удаление элемента списка - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Не подсчитывает русские символы http://www.cyberforum.ru/cpp-beginners/thread773216.html
Не пойму в чём загвостка; логически вроде всё верно: #include <iostream> #include <fstream> #include <cstdlib> #include <stdexcept> int main() { try { std::locale::global(std::locale(""));
C++ Код стандартных функций Добрый вечер. Подскажите пожалуйста как просмотреть код библиотечной функции? Интересуют функции cin i cout. http://www.cyberforum.ru/cpp-beginners/thread773215.html
Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на глав- ной и побочной диагонали C++
Здравствуйте! Помогите пожалуйста. Нужно написать алгоритм на C++. >>Вычислить произведение всех столбцов массива, у которых первый элемент больше элементов расположенных на глав- ной и побочной диагонали.<< Есть код, но, возможно, с недочётами. #include "stdafx.h" #include <iostream> #include <conio.h> using namespace std;
арифметические операции с данымы типа "время" C++
Есть переменная типа string a1="071355". Необходимо перевести значение переменной в формат времени, проделать математическую операцию, например увеличить на 1 минуту и 13 секунд и вернуть в первичное значение. Я в с++ очень мало знаю поэтому посоветуйте как сделать или куда копать ато не могу найти.
C++ Клавиатурный тренажер на с++ http://www.cyberforum.ru/cpp-beginners/thread773184.html
Добрый,вечер всем! Люди добрые,помогите пожалуйста! Покажите пожалуйста простейший пример кода приложения "Клавиатурный тренажер"! Задали курсовую, а я не могу сообразить,что мне делать!
C++ Дана последовательность расположить её положительные элементы стоящие на нечётных местах по возрастанию Помогите, пожалуйста. >>Дана последовательность расположить её положительные элементы стоящие на нечётных местах по возрастанию.<< Нужно написать алгоритм на C++ Заранее спасибо добрым людям! подробнее

Показать сообщение отдельно
NinjaNoob
1 / 1 / 0
Регистрация: 21.12.2012
Сообщений: 19
28.01.2013, 00:41     удаление элемента списка
есть структура
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
typedef struct StudentInfo //создание нового типа запись для хранения информационных полей элемента списка
{
    int id; //количество книг в картотеке
    char surname[20]; //
    char name[20]; //фамилия автора книги
    char secondname[20];
    int year; //год издания
    char faculty[10];
    char specialty[10];
    int course;
    int mid_ball;
 
} Student; //имя созданного типа
 
typedef struct List //создание нового типа запись для хранения информации элемента списка
{
Student inf; //информационные поля
struct List* NEXT; //указатель на следующий элемент списка
struct List* PREV; //указатель на предыдущий элемент списка
} Element; //имя созданного нового типа
есть функция, которая должна удалять элемент
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
void DeleteElement(Element **Top) {
    Element *Current=*Top; //текущие указатели списков равны указателям на вершины списков
    int n=0; //результат поиска
    char isk[20]; //фамилия искомого студента
    system("CLS");
    if(Current==NULL) printf("Перед тем, как удалять элементы из списка, создайте его!\n");
    else {
        printf("Введите фамилию студента, чтобы удалить его из списка:\n");
        scanf("%s",isk);
    while(Current!=NULL) {
        if(strcmp(Current->inf.surname,isk)==0) {
            n++; //поиск успешен
            if(Current==*Top) {
                *Top=(*Top)->NEXT; //вершиной становится следующий элемент
                Current->NEXT->PREV=NULL; //обнуление указателя новой вершины на предыдущий элемент
                free(Current); //освобождение памяти под старую вершину
            }
            else if(Current->NEXT==NULL) {
                Current->PREV->NEXT=NULL; //ссылка предпоследнего элемента на следующий обнуляется
                free(Current);  //память под старый конец списка освобождается
            } else {
                Current->NEXT->PREV=Current->PREV; //ссылка на следующий элемент у предыдущего элемента (относительно удаляемого) приравнивается следующем элементу
                Current->PREV->NEXT=Current->NEXT; //ссылка на предыдущий элемент у следующего элемента (относительно удаляемого) приравнивается предыдущему элементу
                free(Current); //память освобождается
            }
        }
    Current=Current->NEXT; //переход к следующему элементу
    }
    }
getch();
}
прога вылетает на if(strcmp(Current->inf.surname,isk)==0) {

Добавлено через 21 минуту
Решено.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 03:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru